21xrx.com
2024-11-22 07:49:24 Friday
登录
文章检索 我的文章 写文章
用C++编写程序输出a和b之间的素数
2023-07-04 06:27:48 深夜i     --     --
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之间的所有素数的程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复