4-11:丑数

问题:丑数

我们把只包含因子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;
}

Category technology