传送门biu~
其实这并不是真正严格的线性筛,而是叫埃氏筛,复杂度约为O(nloglogn)(出自lyd的《算法竞赛进阶指南》),接近线性O(n)。
在考场上一般使用埃氏筛就可以辣!
#include<bits/stdc++.h>
using namespace std;
bool b[10000005];
int n,m,x;
int main(){
b[1]=1;
scanf("%d%d",&n,&m);
for(int i=2;i<=sqrt(n);i++){
if(b[i])continue;
for(int j=i*i;j<=n;j+=i)b[j]=1;
}
while(m--){
scanf("%d",&x);
if(!b[x])puts("Yes");
else puts("No");
}
}