21xrx.com
2024-12-22 23:34:14 Sunday
登录
文章检索 我的文章 写文章
如何在C++中计算给定数n前面的素数总和?
2023-07-11 16:15:27 深夜i     --     --
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++语言的强大!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章