import java.util.Scanner;
public class Main {
public static void main(String[]args){
int n = new Scanner(System.in).nextInt();
System.out.println(FindNum(n));
}
public static int FindNum(int index){
if(index<=6){
return index;//因为1-6都是丑数
}
int[] num = new int[index];
//丑数 UN = (2 ^ x) * (3 ^ y) * (5 ^ z)
int i2 = 0;
int i3 = 0;
int i5 = 0;
num[0] = 1;
//丑数肯定是由235变换而来的,那么我们给235一次从1开始乘起并去重按照从小到大的顺序排列出来的数组一定就是一个丑数数组
for(int i=1;i<index;i++){
int next2 = num[i2]*2;
int next3 = num[i3]*3;
int next5 = num[i5]*5;
//对这些数字进行变换操作
num[i] = Math.min(next2,Math.min(next3,next5));
//每次计算之后做一个递增操作
if(num[i] == next2){
i2++;
}
if(num[i] == next3){
i3++;
}
if(num[i] == next5){
i5++;
}
}
for (int i : num) {
System.out.println(i);
}
System.out.println("============");
return num[index-1];
}}

京公网安备 11010502036488号