本文主要是介绍洛谷3383 线性筛素数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
如题,给定一个范围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");}
}
这篇关于洛谷3383 线性筛素数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!