经典算法——埃拉托斯特尼筛法

原创 2006年04月13日 22:30:00

一、算法创始人介绍:

埃拉托斯特尼(公元前276—公元前194

埃拉托斯特尼是古希腊著名的数学家、地理学家、天文学家。他先在亚历山大港学习,后又转至雅典。公元前236年,托勒密三世指定他为亚历山大图书馆的图书管理员和馆长。他跟阿基米德是好朋友。埃拉托斯特尼的主要贡献包括:

埃拉托斯特尼筛法:寻找素数的方法。

地理常数测量:日地间距的测量(现在称一个这样的距离为一个天文单位)、地月间距的测量、测量赤道与黄道之间的偏角、地球半径测量等。

精确地图绘制:当时只有托勒密等级的人物能绘出同等级的地图。

二、算法数学原理:

埃拉托斯特尼筛法是快速筛选素数的算法,在处理大量整数是否是素数时有较高的效率。

例:筛选小于n的整数并记录结果。

解:计算sqrt(n)∵对于任意的z<n,若z为合数,不妨设z=a*b,则必有min(a,b)<sqrt(n)

∴所有小于n的合数均可被小于sqrt(n)的整数整除

2开始,依次去除小于n的整数中能被其整除的数,最后剩下的就是素数

三、算法C++代码:

void eratosthens(bool primelist[],int n)

{

    int i,j,k;

    memset(primelist,true,sizeof(primelist));
    primelist[0]=primelist[1]=false;
    for(i=2,k=4;i<=n;i++,k+=i+i-1)
        if(primelist[i])
            for(j=k;j<=n;j+=i)
                primelist[j]=false;

}

相关文章推荐

算法之素数筛法

方法一 //判断是否是一个素数 int IsPrime(int a){ //0,1,负数都是非素数 if(a ...
  • SJF0115
  • SJF0115
  • 2013年03月20日 09:08
  • 7133

素数筛法的复杂度

素数筛法的复杂度 Xie Xie给我看了一个链接性能调优--永远超乎想象,里面提到了素数筛法的复杂度,作者用实验发现此筛法是线形的。 所谓素数筛法就是那个求小于n的所有素数最简...
  • zzxian
  • zzxian
  • 2012年12月06日 00:28
  • 2941

质数筛选方法(埃拉托斯特尼筛法)

今天刷题刷了这么一道题, The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes...

[java]埃拉托斯特尼筛法检定素数

埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。 给出要筛数...

埃拉托斯特尼筛法

算式 给出要筛数值的范围n,找出以根号n内的素数P1,P2......Pk。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,...

利用OpenMP实现埃拉托斯特尼(Eratosthenes)素数筛法并行化

1.算法简介1.1筛法起源筛法是一种简单检定素数的算法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛法(sieve of Eratosth...

埃拉托斯特尼筛法 --- 希腊,筛选素数

埃拉托斯特尼筛法 --- 希腊,筛选素数

埃拉托斯特尼筛法 VS 欧拉筛法 (素数筛选) Java

话不多说,一切尽在代码中!!!推荐使用欧拉筛法,毕竟是线性筛法。import java.util.Arrays;/** * 埃拉托斯特尼筛法 VS 欧拉筛法(更优化) * * @author ...

Sieve of Eratosthenes(埃拉托斯特尼素数筛选法)--java实现

埃拉托色尼筛选法 埃拉托色尼选筛法(the Sieve of Eratosthenes)简称埃氏筛法,是古希腊数学家埃拉托色尼(Eratosthenes 274B.C.~194B.C.)提出的一种筛选...

C++数据结构——埃拉托斯特尼筛法以及求集合的交集,并集,差集

1.放入集合中自定义的类通常需要重载==和 2.集合存储指定类型的键,且不允许有重复的键 3.STL set类迭代器按照递增顺序遍历元素 4.集合的应用:埃拉托斯特尼筛法--找出小于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:经典算法——埃拉托斯特尼筛法
举报原因:
原因补充:

(最多只允许输入30个字)