用c++实现如果将一个正整数分解质因数,即分解成若干质数的乘积,若得到的质因数的个数也是质数,这个整数为“幸运数”。例如12=2x2x3,它有3个质因数,分别是2、2、3,而3为质数,所以12一个幸运数。210 不是一个幸运数,因为210=2x3x5x7,它有4个质因数,而4不是质数。 请编写代码求出不大于n的所有幸运数
时间: 2024-04-10 21:33:44 浏览: 148
c代码-将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
以下是使用 C++ 编写的代码,用于求解不大于给定数 n 的所有幸运数:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 判断一个数是否为质数
bool isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
// 分解质因数并统计质因数个数
int countPrimeFactors(int num) {
int count = 0;
for (int i = 2; i <= num; i++) {
if (num % i == 0 && isPrime(i)) {
count++;
while (num % i == 0) {
num /= i;
}
}
}
return count;
}
// 计算不大于n的所有幸运数
vector<int> luckyNumbers(int n) {
vector<int> result;
for (int i = 1; i <= n; i++) {
if (isPrime(countPrimeFactors(i))) {
result.push_back(i);
}
}
return result;
}
int main() {
int n;
cout << "请输入一个正整数n: ";
cin >> n;
vector<int> luckyNums = luckyNumbers(n);
cout << "不大于" << n << "的所有幸运数为: ";
for (int num : luckyNums) {
cout << num << " ";
}
return 0;
}
```
你可以将以上代码保存为一个后缀名为 `.cpp` 的文件,然后使用 C++ 编译器编译运行。运行程序后,输入一个正整数 n,即可得到不大于 n 的所有幸运数。
阅读全文