#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
int GetUglyNumber(int index)
{
if (index <= 0)
{
return 0;
}
vector<int> result(index, 0);
result[0] = 1;
int t2 = 0, t3 = 0, t5 = 0;
for (int i = 1; i < index; ++i)
{
result[i] = min(min(result[t2] * 2, result[t3] * 3), result[t5] * 5);
if (result[i] == result[t2] * 2)
{
t2++;
}
if (result[i] == result[t3] * 3)
{
t3++;
}
if (result[i] == result[t5] * 5)
{
t5++;
}
}
return result[index - 1];
}
int main()
{
// 前二十个丑数
// int num = 1;
// while (num <= 20)
// {
// if (num % 10)
// {
// cout << GetUglyNumber(num) << '\t';
// num++;
// }
// else
// {
// cout << GetUglyNumber(num) << endl;
// num++;
// }
// }
// 100以内的全部丑数
int ugly = 1;
int number = 1;
while (ugly <= 100)
{
if (number % 10)
{
cout << ugly << '\t';
number++;
ugly = GetUglyNumber(number);
}
else
{
cout << ugly << '\n';
number++;
ugly = GetUglyNumber(number);
}
}
cout << endl;
cout << "100以内的丑数一共有:" << number-1 << "个!" << endl;
return 0;
}
【C++代码】丑数变体
最新推荐文章于 2024-04-29 16:30:00 发布