#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int sz = 10000010;
int su[sz];
bool pd[sz];
int n,m,cnt,x;
int main()
{
cin>>n>>m;
memset(pd,1,sizeof(pd));
pd[0]=pd[1]=0;
for(int i=2;i<=n;++i)
{
if(pd[i])
{
cnt++;
su[cnt]=i;
}
for(int j=1;j<=cnt;++j)
{
if(i*su[j]>n)
break;
pd[i*su[j]]=0;
if(i%su[j]==0)
break;
}
}
for(int i=1;i<=m;++i)
{
cin>>x;
if(pd[x])
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
【模板】线性筛素数
素数筛法与判断
最新推荐文章于 2022-09-14 21:07:52 发布
本文介绍了一种基于埃拉托斯特尼筛法的优化算法,用于高效地找出一定范围内的所有素数,并能快速判断任意数值是否为素数。通过预先计算素数列表并标记合数,该算法能在O(n log log n)的时间复杂度内完成计算。

1436

被折叠的 条评论
为什么被折叠?



