【模板】线性筛
核心思想:每个和数都被自己最小的素数因子筛掉。
代码如下
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e7+10;
int n,m,p[maxn>>3],cnt;
bool vis[maxn];
void read_and_parse(){
scanf("%d%d",&n,&m);
vis[1]=1;
for(int i=2;i<=n;i++){
if(!vis[i])p[++cnt]=i;
for(int j=1;i*p[j]<=n;j++){
vis[i*p[j]]=1;
if(i%p[j]==0)break;
}
}
}
void solve(){
int q;
while(m--){
scanf("%d",&q);
puts(vis[q]?"No":"Yes");
}
}
int main(){
read_and_parse();
solve();
return 0;
}