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.
先求出所有质因子然后判断,结果程序超时了。。。。、
bool isUgly(int num) {
bool flag = true;
if(num < 1){
flag = false;
}
int i,f[num];
for(i = 0 ;i < num;i++){
f[i] = 0;
}
for(i = 2; i*i < num;i++){
if( num % i == 0){
f[i]++;
}
while( num % i == 0){
num = num/i;
}
}
for(i = 2; i < num;i++){
if(f[i] == 1 && (i != 2 || i != 3 || i != 5) ){
flag = false;
}
}
return flag;
}
采用简单的思路对这个数一直用2,3,5来整除最终能得到1则一定是丑数,简单可行
bool isUgly(int num) {
if(num < 1){
return false;
}
while(num % 2 == 0){
num = num / 2;
}
while(num % 3 == 0){
num = num / 3;
}
while(num % 5 == 0){
num = num / 5;
}
return num == 1;
}