首页 > 代码库 > 素数筛法模板

素数筛法模板

代码:

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <math.h>#include <queue>#define MAX 1000001using namespace std;bool b[MAX];int main(){    b[0]=b[1]=false;    b[2]=true;    for(int i=3; i<MAX; i++)        if(i%2==0) b[i]=false;        else b[i]=true;    double t=sqrt(1000000*1.0);    for(int i=3; i<=t; i++)    {        if(b[i])        {            for(int j=i*i; j<MAX; j=j+i)//j=i*i;如:j=5*5(因为2*5,3*5,4*5在之前已经被筛去,节约时间),因为i<=sqrt(MAX-1),所以i*i不会超出int范围。            {                b[j]=false;            }        }    }    for(int i=1; i<=100; i++)    {        if(b[i]) printf("%d ",i);    }}

 

素数筛法模板