一、题目
编写一个程序判断给定的数是否为丑数。
丑数就是只包含质因数 2, 3, 5
的正整数。
示例 1:
输入: 6 输出: true 解释: 6 = 2 × 3
示例 2:
输入: 8 输出: true 解释: 8 = 2 × 2 × 2
示例 3:
输入: 14 输出: false 解释:14
不是丑数,因为它包含了另外一个质因数7
。
说明:
1
是丑数。- 输入不会超过 32 位有符号整数的范围: [−231, 231 − 1]。
二、题解思路
- 题解思路:首先把特殊情况0(false)、1(true)拿出单独判断,然后while循里面判断num是否除2或3或5取余为零,如果被其中一个整除了,则记录下来这个数,不能被这个三个数中的任意一个整除的话则返回false;在被整除的情况下,将num整除这个数继续循环,循环可以执行的条件是num!=1。
三、代码实现
- C++代码实现
class Solution {
public:
bool isUgly(int num)
{
int flag = 0;
int count = 0;
if(num == 0)
return false;
if(num == 1)
return true;
while(num!= 1)
{
int temp = 0;
if(num%2==0)
temp = 2;
else if(num%3==0)
temp = 3;
else if(num%5==0)
temp = 5;
else
return false;
num /= temp;
}
return true;
}
};