我们把只包含因子2,3,5的数成为丑数,求按从小到大顺序的第1500个丑数
丑数如:1,2,3,4,5,6,8
int min(int num1, int num2, int num3) { int min = (num1 < num2) ? num1 : num2; min = (min < num3) ? min : num3; return min; } int calculateuglynumber(int index) { int *uglylist = new int[index]; uglylist[0] = 1; int uglyindex = 1; int *uglymul2 = uglylist; int *uglymul3 = uglylist; int *uglymul5 = uglylist; while (uglyindex < index) { uglylist[uglyindex] = min(*uglymul2 * 2, *uglymul3 * 3, *uglymul5 * 5); while (*uglymul2 * 2 <= uglylist[uglyindex]) uglymul2++; while (*uglymul3 * 3 <= uglylist[uglyindex]) uglymul3++; while (*uglymul5 * 5 <= uglylist[uglyindex]) uglymul5++; uglyindex++; } int ugly = uglylist[uglyindex - 1]; delete[] uglylist; return ugly; }