#include<cstdio>#include<iostream>usingnamespace std;int n, q;bool check (int);int main (){
scanf ("%d %d",&n,&q);for(int i =1; i <= q; i++){int x; scanf ("%d",&x);if(check (x)){
printf ("Yes\n");}else{
printf ("No\n");}}return0;}bool check (int x){if(x ==1)return0;for(int i =2; i <= x / i; i++){if(x % i ==0)return0;}return1;}
2.埃筛
#include<cstdio>#include<iostream>usingnamespace std;constint MAXN =100000005;int n, q, len;int prime[MAXN];bool vis[MAXN];void Make ();int main (){
scanf ("%d %d",&n,&q);
Make ();for(int i =1; i <= q; i++){int x; scanf ("%d",&x);if(vis[x]==0){
printf ("Yes\n");}else{
printf ("No\n");}}return0;}void Make (){
vis[1]=1;for(int i =2; i <= n; i++){if(vis[i]==0){
prime[++len]= i;for(int j = i; j <= n / i; j++){
vis[i * j]=1;}}}}
3.线性筛(欧拉筛)
#include<cstdio>#include<iostream>usingnamespace std;constint MAXN =100000005;int n, m, num;int prime[MAXN];bool vis[MAXN];voidoulasai();intmain(){
cin >> n >> m;oulasai();for(int i =1; i <= m; i++){int tem;scanf("%d",&tem);if(vis[tem]==0)printf("Yes\n");elseprintf("No\n");}return0;}voidoulasai(){
vis[1]=1;for(int i =2; i <= n; i++){if(vis[i]==0){//如果是质数
prime[++num]= i;}for(int j =1; j <= num; j++){if(prime[j]> n / i)break;
vis[i * prime[j]]=1;if(i % prime[j]==0)break;}}}