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;
    }
};
posted @ 2021-06-15 20:38  Dazzling!  阅读(37)  评论(0编辑  收藏  举报