描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
示例1
输入:
7
复制返回值:
8
public class Jz33_GetUglyNumber_Solution {
@Test
public void test() {
int i = GetUglyNumber_Solution(7);
System.out.println("ans : " + i);
}
public int GetUglyNumber_Solution(int index) {
if(0 == index){
return 0;
}
int[] arr = new int[index];
int i2 = 0;
int i3 = 0;
int i5 = 0;
int i = 1;
arr[0] = 1;
while (i < index) {
int s2 = 2 * arr[i2];
while (s2 <= arr[i - 1]) {
s2 = 2 * arr[i2];
i2++;
}
int s3 = 3 * arr[i3];
while (s3 <= arr[i - 1]) {
i3++;
s3 = 3 * arr[i3];
}
int s5 = 5 * arr[i5];
while (s5 <= arr[i - 1]) {
i5++;
s5 = 5 * arr[i5];
}
if (s2 <= s3 && s2 <= s5) {
arr[i] = s2;
i2++;
} else if (s3 <= s2 && s3 <= s5) {
arr[i] = s3;
i3++;
} else {
arr[i] = s5;
i5++;
}
i++;
}
for (int i1 : arr) {
System.out.println(i1);
}
return arr[index - 1];
}
}