根据丑数的定义,0 和负整数一定不是丑数。
当 (n>0) 时,若 (n) 是丑数,则 (n) 可以写成 (n = 2^a imes 3^b imes 5^c)
的形式,其中 (a,b,c) 都是非负整数。特别地,当 (a,b,c) 都是 (0) 时,(n=1)。
为判断 (n) 是否满足上述形式,可以对 (n) 反复除以 (2,3,5),直到 (n) 不再包含质因数 (2,3,5)。若剩下的数等于 (1),则说明 (n) 不包含其他质因数,是丑数;否则,说明 (n) 包含其他质因数,不是丑数。
class Solution {
public:
bool isUgly(int n) {
if(n <= 0) return false;
vector<int> factors = {2, 3, 5};
for(int factor : factors)
while(n % factor == 0)
n /= factor;
return n == 1;
}
};