Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5
.
Example 1:
Input: 6 Output: true Explanation: 6 = 2 × 3
Example 2:
Input: 8 Output: true Explanation: 8 = 2 × 2 × 2
Example 3:
Input: 14 Output: false Explanation:14
is not ugly since it includes another prime factor7
.
Note:
1
is typically treated as an ugly number.- Input is within the 32-bit signed integer range: [−231, 231 − 1].
本题要判断一个数是否是丑数,丑数的定义是素因子只有2,3,5,简单想法就是不断的除这些数,如果最后结果是1,则说明素因子只有2,3,5,否则还有其他素因子。 完整代码如下:
class Solution {
public:
bool isUgly(int num)
{
if (num < 1)
return false;
while (num % 5 == 0)
num /= 5;
while (num % 3 == 0)
num /= 3;
while (num % 2 == 0)
num /= 2;
return num == 1;
}
};
本代码提交AC,用时3MS。
二刷:
class Solution {
public:
bool isUgly(int num) {
if (num <= 0)return false;
while (num != 1) {
if (num % 5 == 0)num /= 5;
else if (num % 3 == 0)num /= 3;
else if (num % 2 == 0)num /= 2;
else return false;
}
return num == 1;
}
};
本代码提交AC,用时0MS。