埃氏筛法(筛选素数)
来源:互联网 发布:邮箱大师mac版本下载 编辑:程序博客网 时间:2024/05/02 02:54
首先,将2到n范围内的所有整数记下来,其中最小的数字2为素数。在表中将2的倍数划去,表中剩下最小的数为3,不能被更小的整除,然后将3的倍数划去。
如果表中剩下的最小数为m,m是素数,然后将表中所有m的倍数都划去。像这样反复的操作,就能依次枚举n以内的素数了。
复杂度:nloglogn
代码实现:
#include<iostream>#include<string.h>
using namespace std;
#define MAX_N 100000
bool is_prime[MAX_N];
int prime[MAX_N];
int num;
int sieve(int n)
{
num=0;
for(int i=1;i<=n;i++)
is_prime[i]=true;
is_prime[0]=is_prime[1]=false;
for(int i=2;i<=n;i++){
if(is_prime[i])
{
prime[num++]=i;
for(int j=2*i;j<=n;j+=i)
is_prime[j]=false;
}
}
return num;
}
void printf()
{
for(int i=0;i<num;i++)
cout<<prime[i]<<" ";
cout<<endl;
}
int main()
{
int N;
while(cin>>N)
{
memset(prime,0,sizeof(prime));
cout<<sieve(N)<<endl;
printf();
}
}
0 0
- 埃氏筛法(筛选素数)
- 素数筛选
- 筛选素数
- 素数筛选
- 筛选素数
- 素数筛选
- 筛选素数
- 素数筛选
- 素数筛选
- 筛选素数
- 素数筛选
- 素数筛选
- 筛选素数
- 筛选素数
- 素数筛选
- 素数筛选
- 筛选素数
- 素数筛选
- 生活随笔:突然的灵感
- releaseSession理解 (分页问题)
- find命令之(-atime,-ctime,-mtime)
- powerpoint中的自动缩略图效果
- Hibernate 实体映射
- 埃氏筛法(筛选素数)
- dump文件的调试
- protal认证的稳定性测试脚本
- c++学习笔记(5)——关于三种内存分配方法
- 攻破JAVA NIO技术壁垒
- 补间动画
- poj2386
- java容器:Collection中的Iterator和Map中的entrySet对比学习
- 理解mipi协议