埃氏筛
#include#include using namespace std; int main() { //在1~n内筛素数,m个测试样例 int n,m; cin>>n>>m; //初始化全部为素数,然后再筛 vector a(n,true); a[1]=false; for(int i=2;i<=n;++i){ if(a[i]){ for(int j=2;i*j<=n;++j) a[i*j]=false; } } while(m--){ int t; cin>>t; cout<<(a[t] ? "YESn" : "NOn"); } return 0; }
线性筛
#includeusing namespace std; const int maxn=1e7+5; bool a[maxn+5]; int b[maxn+5];//储存质数 int main() { int n,m; cin>>n>>m; memset(a,true,sizeof(a)); a[1]=false; int k=1; for(int i=2;i<=n;i++){ if(a[i]) b[k++]=i; for(int j=1;j<=k&&i*b[j]<=n;j++){ a[i*b[j]]=false; if(i%b[j]==0) break; } } int t; while(m--){ cin>>t; a[t] ? cout<<"YES"< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)