263. 丑数
根据丑数的定义,0 和负整数一定不是丑数。
当 \(n>0\) 时,若 \(n\) 是丑数,则 \(n\) 可以写成 \(n = 2^a \times 3^b \times 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;
}
};