// 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,
// 但14不是,因为它包含因子7。
// 习惯上我们把1当做是第一个丑数。
// 求按从小到大的顺序的第N个丑数。
public int GetUglyNumber_Solution(int index) {
if(index == 1) return 1;
else{
int count = 1;
for(int i = 2;;i ++){
if(isUglyNumber(i)) count ++;
if(count == index) return i;
}
}
}
//构造一个函数判断是否为丑数
private boolean isUglyNumber(int n){
if(n == 1) return true;
else{
if(n % 2 == 0) return isUglyNumber(n / 2);
if(n % 3 == 0) return isUglyNumber(n / 3);
if(n % 5 == 0) return isUglyNumber(n / 5);
}
return false;
}
方法2:
/*
* 方法2
*
*/
public static int GetUglyNumber_Solution2(int index){
if(index == 1) return 1;
int count = 1;
for(int i = 2;;i ++){
int temp = i;
while(temp % 2 == 0){
temp = temp / 2;
}
while(temp % 3 == 0){
temp = temp / 3;
}
while(temp % 5 == 0){
temp = temp / 5;
}
if(temp == 1) count ++;
if(count == index) return i;
}
}