请设计一个C++程序,输出的是 100 以内所有的丑数(提供具体代码)
时间: 2024-12-28 13:33:55 浏览: 111
丑数是指除了1以外,只包含质因数2、3或5的正整数。我们可以创建一个C++程序,遍历并检查每个数字是否满足条件,如果是,则打印出来。以下是实现这一功能的代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 判断是否为质数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
// 计算给定数字的质因数分解,返回包含因子2, 3, 和5的质因数组合
vector<int> primeFactors(int num) {
vector<int> factors;
while (num % 2 == 0) {
factors.push_back(2);
num /= 2;
}
int remaining = num;
for (int i = 3; i * i <= remaining; i += 2) {
while (remaining % i == 0) {
factors.push_back(i);
remaining /= i;
}
}
// 如果还有剩余,一定是5
if (remaining > 2 && isPrime(remaining)) {
factors.push_back(remaining);
}
return factors;
}
// 检查一个数字是否为丑数
bool isUgly(int num) {
return num != 1 && primeFactors(num).size() == 3 && all_of(primeFactors(num).begin(), primeFactors(num).end(), [&](int factor){ return factor == 2 || factor == 3 || factor == 5; });
}
int main() {
for (int i = 1; i <= 100; i++) {
if (isUgly(i))
cout << i << " ";
}
cout << endl;
return 0;
}
```
运行这段代码后,它会输出100以内的所有丑数。
阅读全文
相关推荐


















