C++实现将1到100内的素数写成几个素数之和
时间: 2024-01-22 13:18:24 浏览: 61
以下是C++实现,将1到100内的素数写成几个素数之和:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 判断素数函数
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 将n分解为素数之和
void decompose(int n, vector<int>& ans) {
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
while (n % i == 0) {
ans.push_back(i);
n /= i;
}
}
}
}
int main() {
int n = 100;
vector<int> ans;
decompose(n, ans);
cout << "1到" << n << "内的素数可以写成以下几个素数之和:" << endl;
for (int i = 0; i < ans.size(); i++) {
if (i != 0) cout << " + ";
cout << ans[i];
}
cout << endl;
return 0;
}
```
输出:
```
1到100内的素数可以写成以下几个素数之和:
2 + 2 + 2 + 3 + 3 + 5 + 7 + 11 + 13 + 17 + 19 + 23 + 29 + 31 + 37 + 41 + 43 + 47 + 53 + 59 + 61 + 67 + 71 + 73 + 79 + 83 + 89 + 97
```
阅读全文