筛素数-欧拉筛法模板

来源:互联网 发布:弹幕位置显示算法 编辑:程序博客网 时间:2024/06/06 00:11

时间复杂度O(n)

const int maxn=1e6+5;int prime[maxn];int cnt;bitset<maxn> vis;void get_prime(int m)//筛出<m的素数{    cnt=0;    vis.reset();    for(int i=2;i<m;++i){        if(!vis[i]){            prime[cnt++]=i;        }        int cur;        for(int j=0;j<cnt&&(cur=i*prime[j])<m;++j){            vis[cur]=1;            if(!(i%prime[j])){                break;            }        }    }}int main(){    get_prime(maxn);    for(int i=0;i<cnt;++i){        cout<<prime[i]<<endl;    }    cout<<"cnt:"<<cnt<<endl;}
原创粉丝点击