写一个程序来检测一个整数是不是丑数
。
丑数的定义是,只包含质因子 2, 3, 5
的正整数。比如 6, 8 就是丑数,但是 14 不是丑数以为他包含了质因子 7。
注意事项
可以认为 1
是一个特殊的丑数。
public class Solution {
/*
* @param num: An integer
* @return: true if num is an ugly number or false
*/
public boolean isUgly(int num) {
// write your code here
if(num<=0)
return false;
else
{
while(num%2==0)
num/=2;
while(num%3==0)
num/=3;
while(num%5==0)
num/=5;
return (num==1)?true:false;
}
}
}
设计一个算法,找出只含素因子2
,3
,5
的第 n 小的数。
符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12...
注意事项
我们可以认为1
也是一个丑数
public class Solution {
/*
* @param n: An integer
* @return: the nth prime number as description.
*/
public int nthUglyNumber(int n) {
// write your code here
List<Integer>uglys=new ArrayList<Integer>();
uglys.add(1);
int p2=0,p3=0,p5=0;
for(int i=1;i<n;i++){
int lastNumber=uglys.get(i-1);
while(uglys.get(p2)*2<=lastNumber) p2++;
while(uglys.get(p3)*3<=lastNumber) p3++;
while(uglys.get(p5)*5<=lastNumber) p5++;
uglys.add(Math.min(Math.min(uglys.get(p2)*2,uglys.get(p3)*3),uglys.get(p5)*5));
}
return uglys.get(n-1);
}
}