线性筛板子
题目描述
如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内)
输入格式
第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。
接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数。
输出格式
输出包含M行,每行为Yes或No,即依次为每一个询问的结果。
注意1 已经被筛掉
如果%==0 则停止 会被更大的数筛掉
时间复杂度O(n)
code:
// #include<bits/stdc++.h> using namespace std; #define ll long long ll prime[10000010],v[10000010],n,m; ll len=0; void shai() { v[1]=1; for(int i=2;i<=n;i++) { if(!v[i]) prime[++len]=i; for(int j=1;prime[j]*i<=n&&j<=len;j++) { v[prime[j]*i]=1; if((i%prime[j])==0) break; } } } int main() { cin>>n; shai(); ll x; cin>>m; for(int i=1;i<=m;i++) { cin>>x; if(v[x]) puts("No"); else puts("Yes"); } }
刀剑映出了战士的心。而我的心,漆黑且残破
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步