21xrx.com
2025-03-08 00:24:25 Saturday
文章检索 我的文章 写文章
C++初学者如何统计不大于m的质数个数及总和
2023-07-09 16:45:39 深夜i     19     0
C++ 初学者 统计 质数 不大于m 个数 总和

对于C++初学者来说,统计不大于m的质数个数及总和是一个简单但又有实际应用的问题。下面我们将介绍一下如何在C++中进行这个任务。

首先,我们需要明确什么是质数。质数指的是只能被1和它本身整除的正整数,例如2、3、5、7等。因此,我们需要一个函数来检查一个数是否为质数。以下是一个检查质数的函数:

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

上面的代码中,我们首先判断n是否小于等于1,如果是的话则不是质数,直接返回false。接着,我们循环判断2到n的平方根是否可以整除n,如果可以,则说明n不是质数,返回false。如果循环结束后仍未能找到n的因子,则说明n是质数,返回true。

有了判断质数的函数,我们就可以统计不大于m的质数个数及总和了。我们可以使用循环遍历2到m之间的所有数,判断每个数是否为质数,如果是,则累加到总和中,并计数。以下是代码实现:

c++
#include <iostream>
using namespace std;
bool is_prime(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 m, sum = 0, count = 0;
  cout << "请输入一个正整数m:";
  cin >> m;
  for (int i = 2; i <= m; i++) {
    if (is_prime(i)) {
      sum += i;
      count++;
    }
  }
  cout << "不大于" << m << "的质数个数为:" << count << endl;
  cout << "不大于" << m << "的质数总和为:" << sum << endl;
  return 0;
}

上面的程序中,我们使用一个循环遍历2到m之间的所有数,判断每个数是否为质数。如果是,则累加到总和中,并计数。循环结束后,输出结果即可。

总之,这个问题涉及到了C++中的函数、循环等基本语法,对于初学者而言是一个很好的练手题目。希望本文能够对C++初学者有所帮助。

  
  

评论区

    相似文章