1.题目
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例:
输入:n = 6输出:true解释:6 = 2 × 3输入:n = 8输出:true解释:8 = 2 × 2 × 2输入:n = 14输出:false解释:14 不是丑数,因为它包含了另外一个质因数 7 。输入:n = 1输出:true解释:1 通常被视为丑数。
提示:
- -2^31 <= n <= 2^31 - 1
2.思路
根据丑数的定义,0和正整数一定不是丑数
当n > 0时,若n是丑数,则n可以写成n = 2^a × 3^b × 5^c,其中 a,b,c都是非负整数。特别地,当 a,b,c 都是 0 时,n=1。
可以对 n 反复除以 2,3,5,直到 n 不再包含质因数 2,3,5。若剩下的数等于 1,则说明 n不包含其他质因数,是丑数;否则,说明 n 包含其他质因数,不是丑数。
public boolean isUgly(int n) {if (n <= 0) {return false;}int[] factors = {2, 3, 5};for (int factor : factors) {while (n % factor == 0) {n /= factor;}}return n == 1;}
