题目:Ugly Number
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.
题目解析:即num是n个随意2、3、5的积。
One:直接法-先判断负数和1.然后以num%2、3、5是否为0为条件进行num=num/2、3、5的循环。最后判断num是否为1.是返回true,否返回false。 1个循环
public class Solution {
public boolean isUgly(int num) {
if(num<=0)return false;
if(num==1)return true;
while(num%2==0||num%3==0||num%5==0){
if(num%2==0)num/=2;
if(num%3==0)num/=3;
if(num%5==0)num/=5;
}
if(num==1)return true;
else return false;
}
}
Two:3个循环
public class Solution {
public boolean isUgly(int num) {
if(num<=0) return false;
if(num==1) return true;
while(num%2==0) num=num>>1;
while(num%3==0) num=num/3;
while(num%5==0) num=num/5;
return num==1;
}
}
Three: 递归的方法
public class Solution {
public boolean isUgly(int num) {
if(num<=0) return false;
if(num==1) return true;
while(num%2==0) return isUgly(num/2);
while(num%3==0) return isUgly(num/3);
while(num%5==0) return isUgly(num/5);
return false;
}
}