21xrx.com
2025-07-15 05:25:10 Tuesday
登录
文章检索 我的文章 写文章
用C++编写程序输出a和b之间的素数
2023-07-04 06:27:48 深夜i     22     0
C++ 程序 输出 素数 a和b

在C++编程中,一个常见的问题是如何输出一定范围内的所有素数。素数是只能被1和它本身整除的整数,在计算机科学中很有用。

要输出a和b之间的素数,需要实现一个函数,该函数接受两个整数参数a和b,并在a和b之间找到所有的素数并输出。下面是实现这个函数的步骤:

1. 声明一个bool类型的数组,数组的大小为b+1,表示从1到b的整数是否是素数。

2. 遍历数组,将数组中的所有元素初始化为true,表示它们都是素数。

3. 遍历2到b的平方根,如果它是素数,则将2到b中所有的它的倍数标记为非素数。

4. 输出a到b之间所有标记为素数的整数。

下面是这个函数的代码:

#include <iostream>
#include <cmath>
using namespace std;
void printPrimes(int a, int b) {
  bool isPrime[b+1];
  for (int i = 2; i <= b; i++) {
    isPrime[i] = true;
  }
  for (int i = 2; i <= sqrt(b); i++) {
    if (isPrime[i]) {
      for (int j = i*i; j <= b; j += i) {
        isPrime[j] = false;
      }
    }
  }
  for (int i = a; i <= b; i++) {
    if (isPrime[i])
      cout << i << " ";
    
  }
  cout << endl;
}
int main() {
  int a = 1, b = 100;
  printPrimes(a, b);
  return 0;
}

在上面的代码中,我们使用sqrt(b)来减少循环次数,使代码更高效。sqrt(b)表示b的平方根,而两个素数之积不可能大于它们的平方根,所以我们只需要遍历到平方根即可确定它们是否为素数。

然后,我们使用一个嵌套循环来将标记为素数的整数输出到控制台上。这样就完成了输出a到b之间的所有素数的程序。

  
  

评论区

    相似文章