单纯的线性筛素数

很多地方要用到素数,而能很快的写出代码筛出素数是很不错的我就单独写一个线性筛的代码和证明。

#include<iostream>
#incldue<cstdio>
#include<queue>
#include<algorihtm>
#include<cstding>
using namespace std;
#define N 1000009
bool mark[N];//标记合数,
int prime[90000];//储存质数 
void first()
{
    for(int i=2;i<=N;i++)
    {
        if(!mark[i]) prime[++prime[0]]=1;
        
        for(int j=1;j<=prime[0];j++)
        {
            if(i*prime[j]>N)     break;
            mark[i*prime[j]]=1;
            if(i%prime[j]==0)    break;
        }
    }
}
int main()
{
    first();
}
 
原文地址:https://www.cnblogs.com/CLGYPYJ/p/7536046.html