#include<iostream>
#include<cstring>
using namespace std;
bool is_prime[10000005];
int main()
{
memset(is_prime,0,sizeof(is_prime));
int n,m;
cin >> n >> m;
for (int i=2;i<=n;i++)
{
is_prime[i] = 1; // 假定所有数都是素数
}
for (int i=2;i*i<=n;i++)
{
if (is_prime[i]) // 如果当前数是素数
{
for (int j=i*i;j<=n;j+=i)
{
is_prime[j] = 0; // 他的倍数都不是素数
}
}
}
for (int i=0;i<m;i++)
{
int t;
cin >> t;
if (is_prime[t]) cout << "Yes" << endl;
else cout << "No" << endl;
}
return 0;
}
欧拉筛法 线性筛范围素数
时间复杂度 O(N*logN)
空间复杂度 O(N)