c++求不大于n(n从键盘输入)的素数之和
时间: 2024-10-12 20:08:04 浏览: 22
PTAC-C++求n以内最大的k个素数以及它们的和.rar
在 C++ 中,计算不大于给定整数 n 的所有素数之和可以分为几个步骤:
1. 定义一个函数判断一个数是否为素数。对于每个数 i(从 2 到 n),如果它不是 1 也不是 i 本身,并且能被小于它的正整数整除,则 i 不是素数。
2. 创建一个循环,从 2 开始逐个检查不超过 n 的数字。对于每一个数 i,先标记为可能是素数,然后只对大于 sqrt(i) 的数进行因子检测,因为一个非素数一定有一个因子小于等于其平方根。
3. 如果 i 是素数,就累加到总和中。
4. 最后返回累计的素数之和。
以下是简单的代码示例:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i <= sqrt(num); ++i) {
if (num % i == 0)
return false;
}
return true;
}
int sumOfPrimesBelowN(int n) {
int primeSum = 0;
for (int i = 2; i < n; ++i) {
if (isPrime(i))
primeSum += i;
}
return primeSum;
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
cout << "The sum of all primes less than or equal to " << n << " is: " << sumOfPrimesBelowN(n) << endl;
return 0;
}
```
阅读全文