题目描述
如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内) 输入输出格式 输入格式:
第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。
接下来M行每行包含一个不小于1且不大于N的整数,即询问概数是否为质数。
输出格式:
输出包含M行,每行为Yes或No,即依次为每一个询问的结果。
线性筛素数模板题。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
bool have[
10000010];
int prm[
1000010],n,m;
int main()
{
int i,j,k,p,q,x,y,z,tot=
0;
scanf(
"%d%d",&n,&m);
for (i=
2;i<=n;i++)
{
if (!have[i]) prm[++tot]=i;
for (j=
1;j<=tot&&(LL)i*prm[j]<=n;j++)
{
have[i*prm[j]]=
1;
if (i%prm[j]==
0)
break;
}
}
have[
1]=
1;
while (m--)
{
scanf(
"%d",&x);
if (have[x])
printf(
"No\n");
else printf(
"Yes\n");
}
}
转载请注明原文地址: https://ju.6miu.com/read-680394.html