您的位置:首页 > 其它

119_素数算法之 埃氏筛

2016-01-04 16:15 274 查看
寻找n以内的所有的素数,埃氏筛的实现原理如下:

如果发现一个素数,就将其倍数全都删去,那么数组中下一个未被删去的数一定是素数(也是数组中最小的那个数),反复执行,最后得到素数表。

复杂度为O(nloglogn),接近线性。

//
//  119_prime.cpp
//  changlle
//
//  Created by user on 1/4/16.
//  Copyright (c) 2016 user. All rights reserved.
//

#include <iostream>
using namespace std;
const int inf=100;

int prime_array[inf];
bool is_prime[inf+1];

int sieve (int n) {

int p=0;
for (int i=0;i<=n;i++)  is_prime[i]=true;
is_prime[0]=false;
is_prime[1]=false;

for (int i=2;i<=n;i++)
{
if (is_prime[i]) {

prime_array[p++]=i;
//cout<<i<<endl;

for (int m=2;m*i<=n;m++)
is_prime[m*i]=false;

}

}

return p;
}

int main() {

int num=sieve(11);

cout<<num<<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: