21xrx.com
2025-04-16 14:57:58 Wednesday
文章检索 我的文章 写文章
如何在C++中计算给定数n前面的素数总和?
2023-07-11 16:15:27 深夜i     21     0
C++ 计算 素数 总和 给定数n

对于一个给定的正整数n,我们可以使用C++语言来计算它前面的所有素数的总和。素数是指只能被1和本身整除的正整数。那么,如何在C++中计算给定数n前面的素数总和呢?

首先,我们需要定义一个bool类型的函数,用于判断一个数是否为素数。在函数中,我们可以使用for循环来遍历从2到该数的平方根之间的所有整数,如果该数能被其中任意一个整数整除,则它不是素数,返回false。如果遍历完所有可能的因数,都没有整除给定的数,则它是素数,返回true。代码如下:

bool isPrime(int n) {
  if(n <= 1)
    return false;
  
  for(int i = 2; i <= sqrt(n); i++) {
    if(n % i == 0)
      return false;
    
  }
  return true;
}

接下来,我们可以使用一个for循环来遍历从2到n之间的所有正整数,如果该数是素数,则累加到一个变量primeSum中。最后返回该变量即为n前面的素数总和。代码如下:

int sumOfPrimes(int n) {
  int primeSum = 0;
  for(int i = 2; i < n; i++) {
    if(isPrime(i)) {
      primeSum += i;
    }
  }
  return primeSum;
}

完整代码如下:

#include <iostream>
#include <cmath>    // sqrt函数的头文件
using namespace std;
bool isPrime(int n) {
  if(n <= 1)
    return false;
  
  for(int i = 2; i <= sqrt(n); i++) {
    if(n % i == 0)
      return false;
    
  }
  return true;
}
int sumOfPrimes(int n) {
  int primeSum = 0;
  for(int i = 2; i < n; i++) {
    if(isPrime(i)) {
      primeSum += i;
    }
  }
  return primeSum;
}
int main() {
  int n;
  cout << "请输入一个正整数:";
  cin >> n;
  cout << n << "前面的素数总和为:" << sumOfPrimes(n) << endl;
  return 0;
}

通过上述代码,我们可以轻松计算出给定数n前面的素数总和,让我们体验C++语言的强大!

  
  

评论区

请求出错了