素数求和问题 c++
时间: 2023-08-03 14:16:04 浏览: 164
素数求和问题可以使用埃氏筛法来实现,具体代码如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<bool> is_prime(n + 1, true);
vector<int> primes;
int sum = 0;
for (int i = 2; i <= n; ++i) {
if (is_prime[i]) {
primes.push_back(i);
sum += i;
}
for (int j = 0; j < primes.size() && i * primes[j] <= n; ++j) {
is_prime[i * primes[j]] = false;
if (i % primes[j] == 0) break;
}
}
cout << sum << endl;
return 0;
}
```
这段代码中,我们首先输入一个正整数n,然后定义一个长度为n+1的bool型数组is_prime,它的每个元素表示该下标对应的数是否为素数。接着定义一个vector<int> primes,用来存储所有的素数。最后我们使用埃氏筛法筛选素数,并将素数相加得到结果。
相关问题
统计素数并求和c++
以下是一个统计素数并求和的 C++ 代码示例:
```c++
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cout << "请输入一个正整数n:" << endl;
cin >> n;
int cnt = 0; // 计数器,记录素数的个数
int sum = 0; // 素数的和
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
cnt++;
sum += i;
}
}
cout << "在[2, " << n << "]区间内,共有" << cnt << "个素数,它们的和为" << sum << endl;
return 0;
}
```
代码中的 `isPrime` 函数用于判断一个数是否为素数。在 `main` 函数中,我们首先输入一个正整数n,然后从2开始枚举每个数,判断其是否为素数,如果是素数,则计数器加1,素数的和也加上该素数。最后输出统计结果。
编写一个求5到50所有素数以及求和的c++程序
#include <stdio.h>
#include <stdbool.h>
bool isPrime(int num);
int main() {
int sum = 0;
printf("The Prime Numbers from 5 to 50 are:\n");
for (int i = 5; i <= 50; i++) {
if (isPrime(i)) {
printf("%d ", i);
sum += i;
}
}
printf("\nThe sum of Prime Numbers from 5 to 50 is: %d\n", sum);
return 0;
}
bool isPrime(int num) {
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
阅读全文