题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
题目分析
这个题目其实是素数筛的变种问题,只要按顺序拿出所有的丑数就可以了。
java代码
public int GetUglyNumber_Solution(int index) {
if(index<=0){
return 0;
}
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
int N = 10000;
int i2 = 0;
int i3 = 0;
int i5 = 0;
int temp = 0;
for(int i=0;i<N;i++){
int x2 = arrayList.get(i2);
int x3 = arrayList.get(i3);
int x5 = arrayList.get(i5);
temp = Math.min(x2*2,Math.min(x3*3,x5*5));
if(temp == x2*2){
i2++;
}
if(temp == x3*3){
i3++;
}
if(temp == x5*5){
i5++;
}
arrayList.add(temp);
}
return arrayList.get(index-1);
}
来源:CSDN
作者:FiveWords
链接:https://blog.csdn.net/qq_38183799/article/details/104188256