如果将一个正整数分解质因数,即分解成若干质数的乘积,若得到的质因数的个数也是质数,这个整数为“幸运数”。例如12=2x2x3,它有3个质因数,分别是2、2、3,而3为质数,所以12一个幸运数。210 不是一个幸运数,因为210=2x3x5x7,它有4个质因数,而4不是质数。 请编写代码求出不大于n的所有幸运数,使用c++实现
时间: 2024-04-10 12:34:43 浏览: 15
好的,下面是使用 C++ 实现的代码,用于找出不大于 n 的所有幸运数:
```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;
}
// 分解质因数并统计个数
int factorize(int num) {
int count = 0;
for (int i = 2; i <= num; i++) {
if (num % i == 0) {
count++;
while (num % i == 0) {
num /= i;
}
}
}
return count;
}
// 找出不大于 n 的所有幸运数
vector<int> findLuckyNumbers(int n) {
vector<int> luckyNumbers;
for (int i = 2; i <= n; i++) {
int count = factorize(i);
if (isPrime(count)) {
luckyNumbers.push_back(i);
}
}
return luckyNumbers;
}
int main() {
int n;
cout << "请输入一个整数 n:" << endl;
cin >> n;
vector<int> luckyNumbers = findLuckyNumbers(n);
cout << "不大于 " << n << " 的所有幸运数:" << endl;
for (int num : luckyNumbers) {
cout << num << " ";
}
return 0;
}
```
你可以在本地编译并运行这段代码,输入一个整数 n,即可得到不大于 n 的所有幸运数。希望能对你有所帮助!