线性筛模板
洛谷爆内存了 然而并不想改
#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; }