Eratosthenes筛法
2024-09-05 13:06:11
复杂度为nlogn。
算法思想为:枚举1~sqrt(n),然后把每一个数的倍数都都打上不是素数的标记。
还要特别注意0,1不是素数,打标记枚举到i*k<=n.
代码如下
#include<bits/stdc++.h>
#define maxn 10000001
using namespace std;
bool prime[maxn];
int n,m;
void make_prime()
{
memset(prime,true,sizeof(prime));
prime[]=prime[]=false;//0,1都不是素数
int t=sqrt(n);//开根号
for(int i=;i<=t;i++)
{
if(prime[i])
{
for(int j=*i;j<=n;j+=i)//加倍
{
prime[j]=false;
}
}
}
return;
}
int main(){
cin>>n>>m;
make_prime();
for(int i=,x;i<=m;i++){
cin>>x;
if(x==||x==) cout<<"No"<<endl;
else if(prime[x]==true) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return ;
}
最新文章
- HDOJ 2393. Higher Math
- UWP学习记录9-设计和UI之控件和模式6
- ExtJS笔记 Proxy
- Anti-pattern
- Android图形显示之硬件抽象层Gralloc(hal 转)
- CodeForces 455B	A Lot of Games (博弈论)
- ubuntu12.10设置禁止锁屏和屏幕常亮
- sqlite3触发器的使用
- 创建ListView控件
- ubuntu下 编译Caffe的Matlab接口
- Neo4j 第五篇:批量更新数据
- Spring 对缓存的抽象
- Beta冲刺前准备
- 自动化运维工具——puppet详解(二)
- SQL优化 MySQL版 - B树索引详讲
- GANs用于文本生成
- Mysql插入中文的字段内容时乱码的解决方法
- ASP.NET MVC 4 (十二) Web API
- linux神器strace
- 【CSP】最大的矩形