因子中仅仅包含2、3、5的数,称为丑数。比如说14,就不是丑数,因为因子包含7。请输出所有丑数中的第n个丑数。
package test;
public class Test3 {
static void solve(int n){
int[] stack = new int[n];
stack[0] = 1;
int cur = 1;
int index_2 = 0;
int index_3 = 0;
int index_5 = 0;
while(cur<n){
stack[cur] = getmin(stack[index_2]*2,stack[index_3]*3,stack[index_5]*5);
cur++;
while(index_2<n && stack[index_2]*2<=stack[cur-1]){
index_2++;
}
while(index_3<n && stack[index_3]*3<=stack[cur-1]){
index_3++;
}
while(index_5<n && stack[index_5]*5<=stack[cur-1]){
index_5++;
}
}
System.out.println(stack[n-1]);
}
static int getmin(int n1,int n2,int n3){
int min = n1>n2?n2:n1;
return n3>min?min:n3;
}
public static void main(String[] args) {
solve(6);
}
}