题目:我们把只包含因子2、3和5的数称作丑数 (Ugly
Number)。求按从小到大的顺序找到第1500个丑数是多少?
• 例如,6、8 都是丑数,但14不是,因为它包含因子7。习
惯上我们把1当作第一个丑数。
• 解法1:逐个判断每个整数是不是丑数的解法,直观但不
够高效。
package helen.b;
public class UglyNumber {
public static void main(String[] args) {
System.out.println(uglyNum(1));
System.out.println(uglyNum(15));
}
private static int uglyNum(int index) {
if(index<=0){
throw new RuntimeException();
}
int uglyFind=0;
int uglynum=0;
while(uglyFind<index){
++uglynum;
if(isUgly(uglynum)){
++uglyFind;
}
}
return uglynum;
}
private static boolean isUgly(int n) {
while (n%3==0){
n=n/3;
}
while (n%2==0){
n=n/2;
}
while (n%5=&