线性筛模板

来源:互联网 发布:笔记本电脑周边 知乎 编辑:程序博客网 时间:2024/06/04 18:20

洛谷爆内存了 然而并不想改

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m;int isnotp[10000001],prim[10000001],cnt,check[10000001],xi;int primer (int x){for (int i=2;i<=x;i++){if (!isnotp[i]) prim[++cnt]=i;//是素数加入数组 for (int j=1;j<=cnt&&i*prim[j]<x;j++) {isnotp[i*prim[j]]=1;//倍数标记为非素数 if (!(i%prim[j])) break;//难点 当遇到存在i%某一素数==0时直接break当前的prime因为剩下的由后面的i来判断 }}}int main (){cin>>n>>m;primer(n);for (int i=1;i<cnt;i++){check[prim[i]]=1;}for (int i=1;i<=m;i++){cin>>xi;if (check[xi]) cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;}


0 0