问题:丑数
我们把只包含因子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;
}