21xrx.com
2024-11-25 05:06:52 Monday
登录
文章检索 我的文章 写文章
C++实现质数筛选代码
2023-07-02 15:20:40 深夜i     --     --
C++ 质数 筛选 代码 实现

质数筛选是算法中的一个经典问题,而 C++ 是一门广泛使用的编程语言。在这篇文章中,我们将讨论如何使用 C++ 实现质数筛选代码。

质数筛选是一种算法,用于找到一定范围内的所有质数。它的基本思路是从 2 开始遍历每一个数,并将它们的倍数标记为合数。最终,没有被标记的数字就是质数。

下面是使用 C++ 实现质数筛选的代码:


#include<iostream>

using namespace std;

const int MAXN = 1e6 + 5; // 素数表的最大范围

int prime[MAXN], is_prime[MAXN]; // 存放质数和标记数组

int sieve(int n){ // 筛选质数的函数

  int p = 0;

  for(int i=2;i<=n;i++){ // 从2开始遍历每个数

    if(!is_prime[i]) prime[p++] = i; // 如果是质数,存入 prime 数组

    for(int j=0;j<p && i*prime[j]<=n;j++){ // 将 i 的倍数标记为合数

      is_prime[i*prime[j]] = 1;

      if(i%prime[j] == 0) break; // 已经标记过的数不需要再次标记

    }

  }

  return p; // 返回质数的个数

}

int main(){

  int n = 100; // 筛选范围

  int cnt = sieve(n); // 调用 sieve 函数

  for(int i=0;i<cnt;i++) cout<<prime[i]<<" "; // 输出筛选出的质数

  return 0;

}

在上面的代码中,我们首先定义了两个数组 prime 和 is_prime,用于存放质数和标记数组。然后,我们定义了一个函数 sieve,用于筛选质数。该函数接受一个正整数 n,表示筛选的范围。在函数中,我们从 2 开始遍历每一个数,并将它们的倍数标记为合数。最终,没有被标记的数字就是质数,并将它们存入 prime 数组。

在主函数中,我们定义了一个 n 变量,表示筛选的范围。然后,我们调用 sieve 函数,并将质数的个数存入 cnt 变量。最后,我们遍历 prime 数组,并输出所有的质数。

这就是使用 C++ 实现质数筛选代码的全部内容。如果你正好在学习 C++,并且想要练习算法问题,可以尝试编写这个问题的解法,加深自己的理解。

  
  

评论区

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