用cpp写一个程序:对于一个数字,如果它的质数因子只有2, 3, 5,那么他就会被称为丑数,求第n个丑数
时间: 2023-02-07 10:01:55 浏览: 146
找出第n个丑数
好的,这是一个使用 C++ 编写的求第 n 个丑数的程序:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 判断数字是否为丑数
bool isUgly(int num)
{
// 如果数字小于 1,则返回 false
if (num < 1)
return false;
// 对于 2, 3, 5 的质数因子,一直进行除法操作,直到不能再除
while (num % 2 == 0)
num /= 2;
while (num % 3 == 0)
num /= 3;
while (num % 5 == 0)
num /= 5;
// 如果剩余的数字为 1,则说明 num 是由 2, 3, 5 的质数因子组成的,返回 true
return num == 1;
}
// 求第 n 个丑数
int getUglyNumber(int n)
{
// 存储所有丑数的数组
vector<int> uglyNumbers;
// 从 1 开始,找到第 n 个丑数
int i = 1;
while (uglyNumbers.size() < n)
{
if (isUgly(i))
uglyNumbers.push_back(i);
i++;
}
// 返回第 n 个丑数
return uglyNumbers[n - 1];
}
int main()
{
int n;
cout << "Enter n: ";
cin >> n;
int uglyNumber = getUglyNumber(n);
cout << "The " << n << "th ugly number is: " << uglyNumber << endl;
return 0;
}
```
程序的流程如下:
- 定义一个函数 isUgly,用于判断数字是否为丑数。
- 定义一个函数 getUglyNumber,用于求第 n 个丑数。
- 在主函数中读入 n,调用 getUglyNumber 函数求出第 n 个丑数,并输出结果。
阅读全文