1. 题目描述
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.
For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.
Note that 1 is typically treated as an ugly number.
Ugly number代表能且只能被2,3,5整除的正整数,也就是说这个数是任一个2,3,5相乘得到的结果。
2. 解决方案
根据题目描述可以看出只要将这个数一直对2,3,5三个数做除法直到不能整除时考察结果是否为1即可,下面给出实现。
3. Code
class Solution {
public:
bool isUgly(int num) {
if(num <= 0) // 判定是否满足正整数
return false;
else
{
bool flag = false;
// 使num一直对2,3,5做除法直到无法整除
do
{
flag = false;
if(num%2 == 0){ // num整除2
num/=2;
flag = true;
}
if(num%3 == 0){ // num整除3
num/=3;
flag = true;
}
if(num%5 == 0){ // num整除5
num/=5;
flag = true;
}
}while(flag);
if(num == 1) // 若能完全被2,3,5整出则结果为1
return true;
return false;
}
}
};