本文正在参与掘金团队号上线活动,点击 查看大厂春招职位
一、题目描述:
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。
示例 1:
输入:n = 6
输出:true
解释:6 = 2 × 3
二、思路分析:
这其实是一道简单的数学题,根据丑数的定义,我们只要看某个数的质因数是不是只有 2、3、5 即可判断是不是丑数。用程序实现起来也很简单,将数 的 2、3、5 因数全部除掉,然后看得到的结果是不是 1, 如果是 1 就说明是丑数,不是那就说明还有其他的质因数,不是丑数。
三、AC 代码:
class Solution {
public:
bool isUgly(int n) {
if (n <= 0) return false;
while (n % 2 == 0 || n % 3 == 0 || n % 5 == 0) {
if (n % 2 == 0) n /= 2;
else if (n % 3 == 0) n /= 3;
else n /= 5;
}
return n == 1;
}
};
四、总结:
在数论题中我们往往要求某数的质因数,这道题只要求我们对质因数 2、3、5 进行判断,比较简单,你能不能将任何一个数的所有质因数分解出来呢?