求N以内所有质数 时间复杂度O(n)

求N以内质数

这里我们写一个较高效率筛N以内质数的算法,我们模拟走一遍20以内的质数来讲清我们的思路。

在这里插入图片描述
这是对20以内质数的直观思路 具体怎么实现我们用代码来表达

#include<iostream>
using namespace std;
const int N=1e8;
bool st[N];
int primes[N];
int cnt;
void get_primes(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!st[i])
        {
            primes[cnt++]=i;
        }
        for(int j=0;primes[j]*i<=n;j++)
        {
            st[primes[j]*i]=true;
            if(i%primes[j]==0)break;
        }
    }
}
int main()
{
    int n;
    cin>>n;
    get_primes(n);
}
发布了10 篇原创文章 · 获赞 0 · 访问量 188

猜你喜欢

转载自blog.csdn.net/weixin_44460602/article/details/104587358