C++ 已知n,数n以内所有素数之和
时间: 2023-10-31 16:27:21 浏览: 156
编程求解1到n之间所有素数之和
可以使用和Python中类似的质数筛法来实现。以下是一个C++实现:
```c++
#include <iostream>
#include <vector>
using namespace std;
int prime_sum(int n) {
// 初始化一个长度为n+1的bool型数组,用来标记数字是否为素数
vector<bool> is_prime(n+1, true);
// 初始化素数和为0
int prime_sum = 0;
// 从2开始遍历到n
for (int i = 2; i <= n; i++) {
// 如果i为素数,则将素数和加上i,并将i的倍数标记为非素数
if (is_prime[i]) {
prime_sum += i;
for (int j = i*i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
return prime_sum;
}
int main() {
int n;
cout << "请输入n:";
cin >> n;
cout << "数" << n << "以内所有素数之和为:" << prime_sum(n) << endl;
return 0;
}
```
例如,输入n=10,输出结果为17。
阅读全文