首页 > 代码库 > 素数法

素数法

// 1 ~ 1000 素数 #include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#include<queue>using namespace std;bool shu[10000];void sushu1 (int n)//O(n*sqrt(n));{    bool flag;    for(int i=2 ;i <= n ;i++)    {        flag = 0;        for(int j=2;j<=sqrt(i);j++)            if( i%j==0 ) {                flag = 1; break;}        if(!flag) cout<<i<<endl;    }    cout<<endl;}void sushu2(int n)//筛法O(nloglogn);{    int k = sqrt(n) + 1;    memset(shu,1,sizeof(shu));    shu[1] = 0;    for(int i=2;i<=k;i++)    {        int z = n / i + 1;         for(int j=1;j<=z;j++)        {            shu[j*i]=0;        }    }     for(int i=1;i<=n;i++)    {        if(shu[i]==1)        cout<<i<<endl;    }}int main(){    int n = 1000 ;    sushu1(n);    return 0;}

 

素数法