当前位置:首页 > 数学 > 数学科普

埃拉托色尼筛法与素数

导语:一把两千多年前的"筛子",第一次把无穷多个素数从自然数里挑了出来。沿着它走下去,你会遇见圆锥曲线、第一张三角函数表,以及一部统治天文学一千四百年的书。

素数有没有尽头?欧几里得在《几何原本》第九卷里给出了一个漂亮证明,答案是无穷多。但那是很靠后的事。更早的时候,希腊人面对的是一个朴素得多的问题——在一个有限的范围里,怎么把素数一个不漏地找出来。

图片

这个问题的答案,藏在一个叫"筛子"的工具里。它的希腊语名字是 κόσκινον(kóskinon),本意是筛面粉、把粗的和细的分开的器具。把自然数铺开,用一种固定的手法把合数"筛"掉,剩下的就是素数。今天每一本算法教材几乎都会讲它。但它的作者埃拉托色尼(Eratosthenes,约公元前276—前194年)本人写素数的著作,一个字都没留下来。我们今天知道这个筛法,靠的是将近三百年后另一位希腊学者尼科马库斯(Nicomachus,约公元60—120年)——他在《算术概论》(Introduction to Arithmetic)里把这个方法记下来,并明确归在埃拉托色尼名下。

这就是本篇想讲清楚的一段历史:在"证明的诞生"这一编里,希腊人如何从一个具体的算法出发,逐步走向"为什么必然如此"的证明传统。它由四个彼此咬合的主题构成——埃拉托色尼的筛法、阿波罗尼奥斯的圆锥曲线、喜帕恰斯的弦表、托勒密的天文学模型。它们分属数论、几何和天文学,共享的却是同一个内核:把杂乱的现象,整理成可以计算、并且可以证明的秩序。

一、一把筛子,如何把素数挑出来

先回到那个朴素的问题。什么叫素数?一个大于 1 的自然数,如果除了 1 和它自己之外,没有别的正因数,就叫素数;否则叫合数。2、3、5、7、11 是素数,4、6、8、9、10 不是。这个定义现代小学生都懂,但"懂定义"和"能系统地找出所有素数",是两回事。

埃拉托色尼的方法,今天被称作"埃拉托色尼筛法"。我们用一个现代记法把它说清楚——要强调,下面的阿拉伯数字、符号和表格,都是我们今天的写法,古人用的是希腊记数法,也没有"平方"这样的现代记号。

假设要找 30 以内的所有素数。先把 2 到 30 排成一行:

2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30

第一步,2 是素数,留下它,然后把它的倍数 4、6、8、10……全部划掉。第二步,下一个没被划掉的数是 3,它是素数,留下,再把 6、9、12……这些 3 的倍数划掉(其中 6、12 已经被划过了,重复无妨)。第三步,下一个没被划掉的是 5,留下,划掉 10、15、20……以此类推。做到 5 之后,下一个素数是 7,而 7 的平方 49 已经超过 30,于是剩下的所有没被划掉的数,全都必然是素数。最终筛出来的,是 2、3、5、7、11、13、17、19、23、29。

为什么做到 7 就可以停?这是一个值得说透的小道理:如果一个不超过 30 的数还是合数,它一定能写成两个都大于 1 的数的乘积,其中较小的那个因数,不可能超过它的平方根。30 的平方根比 6 小,所以任何不超过 30 的合数,必定有一个不超过 5 的质因数。既然 2、3、5 的倍数都被我们筛干净了,剩下没被划掉的,就不可能是合数。这正是筛法成立的关键,也是它和"一个一个试除法"的本质区别——它不去"检验"每个数,而是主动"生成"所有合数,把它们从列表里抹掉。

还有一点值得一提:尼科马库斯记录的版本,和今天的标准版略有不同。他的筛法从 3 开始,只在奇数里筛,依次去掉奇数的倍数。这个细节反而说明,这技巧在埃拉托色尼的时代可能已经相当成熟,甚至在他之前就有人知道。筛法不是从天而降的天才灵光,而是算术实践里慢慢磨出来的工具。

埃拉托色尼这个人,比"筛法"这个名字要大得多。他是昔兰尼(今利比亚境内)人,后来担任亚历山大里亚图书馆的馆长。据10世纪的拜占庭百科《苏达辞书》,同时代人给他起了个绰号叫"贝塔"(Beta,希腊字母表的第二个字母)——因为他在几乎每个领域都排第二,却未必在某一项上做到第一。他测量地球周长的方法,是古代科学史上最著名的故事之一——利用夏至日正午,赛伊尼(今阿斯旺)的太阳直射井底、而亚历山大里亚的日影有一个角度差,再结合两地的距离,推算出地球的周长。这个测量,连同他的地理学、年代学和一部含六百多颗星的星表,共同构成了一个博学者的形象。素数筛法,只是他众多工作里的一件。

图片

二、圆锥曲线:为天文学备好的几何语言

素数关心的是"数"的内在结构,几乎不依赖图形。而几乎同一时期,希腊几何学家在另一条战线上推进——他们研究的是平面截割圆锥面得到的曲线,也就是圆锥曲线。

这件事并非阿波罗尼奥斯(Apollonius of Perga,约公元前262—前190年)首创。在他之前,研究特定圆锥曲线的,至少有梅奈克穆斯(Menaechmus)和阿里斯泰俄斯(Aristaeus),欧几里得据说也写过关于圆锥曲线的书,可惜都没有流传下来。阿波罗尼奥斯的贡献在于,他把这一整块零散的知识系统化、一般化了。

他的巨著《圆锥曲线论》(Conics)一共八卷。他用一个统一的方法——不再限定圆锥的种类,而是用不同角度的平面去截同一个(乃至双锥的)圆锥面——一举得到全部三种曲线,并给它们取了沿用至今的名字:

- 抛物线(parabola),字面意思是"恰好贴合"(application);

- 椭圆(ellipse),字面意思是"有所不足"(deficiency);

- 双曲线(hyperbola),字面意思是"有所超出"(excess)。

这三个名字的来历,深埋在一个更古老的几何传统——"面积贴合"(application of areas)里。这是毕达哥拉斯学派处理面积问题时的一套方法,阿波罗尼奥斯把它借来命名三类曲线。换句话说,我们今天在物理课本里见到的"抛物线""椭圆轨道",它们的名字诞生于公元前三世纪,出自一种纯粹的几何分类。

《圆锥曲线论》本身是一部规模惊人的书。前四卷是基础,大体整理前人已知的结论;第五到第七卷则是阿波罗尼奥斯最具原创性的部分,讨论曲线的法线、切线和曲率中心,其深度直到笛卡尔时代才被真正超越。据后世数学家帕普斯(Pappus)的记载,第八卷是解决问题的部分,已经亡佚。这本书的流传命运也值得一说:前四卷的希腊文本,靠的是四世纪末欧托基乌斯(Eutocius)校订的本子才保存下来;第五到第七卷,则全靠九世纪巴格达的阿拉伯文译本才得以留存——先有巴努·穆萨兄弟组织翻译,后来哈雷(Edmond Halley)在 1710 年出版拉丁文译本时,又根据帕普斯留下的引理,亲手补写了失传的第八卷。

图片

为什么要在讲素数的文章里,花这么多篇幅讲圆锥曲线?因为它马上要派上大用场。阿波罗尼奥斯本人还做了一件对后世影响深远的事:据现存材料,他最早证明了"本轮"(epicycle)与"偏心圆"(eccentric)这两套用来描述行星不规则运动的几何装置,在适当参数下可以互相等价互换——这个结论,后世称"阿波罗尼奥斯定理",托勒密在《至大论》第十二卷里专门引述了它。纯几何的成果,就这样为一个更宏大的目标——描述天体运动——铺好了路。

三、弦表:为"量天"造出的一把尺子

圆锥曲线解决的是"形状"问题,但天文学家还需要"数量"——他们要计算天球上两点之间的角距离,要推算太阳、月亮的运行速度。这就得把角度和长度对应起来。于是,三角学的第一步,不是作为一门独立的数学诞生的,而是作为天文学的计算工具诞生的。

做出这关键一步的人,通常被认为是喜帕恰斯(Hipparchus of Nicaea,约公元前190—前120年)。关于他的生平,可靠的记载少得可怜:他出生于尼西亚(今土耳其伊兹尼克一带),一生大部分时间在罗德岛工作。他写过至少十几部著作,几乎全部亡佚,唯一完整流传下来的,竟是他对诗人阿拉托斯(Aratus)天文学长诗的评注——一部文学性质的作品,而非他的科学著作。

但托勒密和四世纪的亚历山大里亚学者忒翁(Theon)都提到,喜帕恰斯写过一部十二卷的、讨论"圆内线段"的著作。所谓"圆内线段",就是弦(chord)——圆上两点之间那条直线段的长度。这就是三角学的起点。

喜帕恰斯的做法,用现代语言可以这样转述:他取一个固定大小的圆,把圆周分成 360 等份(这个"分 360 份"的约定,很可能来自巴比伦的六十进制传统),然后为每一个中心角,计算出它所对的弦的长度。研究者重建时推测,他用的圆的半径是 3438 个单位——这个数字并非随意,而是恰好让"1 弧分"对应的弧长接近 1 个单位,从而在角度和长度之间架起一座换算的桥。他可能以 7.5°(也就是圆的 1/48)为间隔列出一张表,中间的角度再用线性内插补出来。

弦和今天的正弦函数是什么关系?用现代记号可以写得很简洁:如果圆心角是 θ,半径是 r,那么

弦长 = 2r · sin(θ/2)

也就是说,弦其实等于"两倍半径乘以半角的正弦"。喜帕恰斯手里没有"sin"这个符号——正弦(sine)这个词要等印度数学家用"半弦"、再经阿拉伯、拉丁翻译,要到一千多年后才定型。但他在几何上做的,本质上就是今天的正弦表。

这张弦表的意义,在于它补上了关键的一环。在它出现之前,希腊天文学家的模型大多是定性的、几何的;有了弦表,他们第一次能把"角度"直接换算成"数值",从而定量地预测日月的位置。喜帕恰斯用它测算了太阳和月亮的距离,还发现了一个了不起的现象——岁差(precession of the equinoxes):春分点沿着黄道缓慢西移,大约每百年移动 1°,整圈大约需要三万六千年。他据此编纂了可能是西方第一份系统的星表,记载了约八百五十颗星的位置和亮度(后世归功于他的"从一到六等"星等标度,我们今天还在用)。

喜帕恰斯因此常被后人称为"三角学之父",也被一些人看作"天文学之父"。但需要谨慎:他的弦表原物没有保存下来,我们能重建它,靠的是托勒密的转述和后人的反推;也有学者(如 Klintberg)质疑托勒密重建的某些细节,认为喜帕恰斯弦表的半径也许不是 3438 而是 3600 个单位。所以更稳妥的说法是:喜帕恰斯是"现存证据表明第一个系统使用三角方法的人",而不是一个所有细节都板上钉钉的"发明者"。

图片

四、托勒密的《至大论》:把所有圆圈拼成一台机器

前面三件事到这里可以合流了:圆锥曲线提供了几何工具,弦表提供了数值工具,缺的是一个人把这些工具组装成一套完整的、可以预测天象的数学模型。这个人就是克劳狄乌斯·托勒密(Claudius Ptolemy,约公元100—170年)。

托勒密在亚历山大里亚工作,写了一部书名原本叫《数学汇编》(Syntaxis Mathematica)的书,十三卷。后来阿拉伯人推崇它,称之为"最伟大的"(al-majisti),拉丁转写就成了我们今天熟悉的《至大论》(Almagest)。

这部书的基本立场,继承自希腊哲学的一个牢固信念:天体的运动,本质上是匀速的圆周运动。可天文学家早就观察到,行星在天上会逆行、会时快时慢,一点都不"匀速"。怎么调和"必须匀速圆周"的原则和"看起来不规则"的观测?托勒密用三件几何装置来解决:

- 本轮(epicycle):行星在一个小圆上转,而这个小圆的圆心又在另一个大圆上转。想象摩天轮装在绕着场地跑的火车上,乘客走出的就是复杂的环线。

- 偏心圆(eccentric):让那个大圆(称为"均轮"deferent)的圆心,偏离地球一点点,从而解释天体忽远忽近。

- 等分点(equant):这是托勒密最大胆的一招。他假设存在一个不在地球、也不在均轮圆心的点,从这个点看去,行星的角速度才是均匀的。这样,既保住了"匀速"的信念(只是换了个观测点),又解释了行星速度的周期性变化。

这三件装置里,本轮和偏心圆是前人的遗产(本轮与偏心圆等价的证明可以追溯到阿波罗尼奥斯,太阳和月亮的模型主要继承喜帕恰斯),真正属于托勒密最具标志性的贡献,是"等分点"。靠着它,托勒密成功地为五颗行星都造出了模型——这是连喜帕恰斯都没能做到的事。托勒密本人对这套装置的复杂度,有一句常被引用的话:我们应该尽量给天体运动套用最简单的假设,但如果简单的不够用,就换一个能解释得更好的。需要说明,这句话是后世对《至大论》的意译转述,不宜当作逐字原话。

《至大论》里还有一张更精细的弦表:从 0.5° 到 180°,每隔 0.5° 给一个弦值,还附上"每增加 1 弧分要加多少"的内插修正。这是现存最早的、完整的三角函数表——喜帕恰斯的表已经佚失,托勒密这张却完整保留至今,成为后世所有三角表的老祖宗。

这套模型有多成功?它预测的日月行星位置,在当时的观测精度下足够好用。它统治了西方和伊斯兰世界的天文学,长达约一千四百年,直到哥白尼和开普勒才被逐步取代。托勒密究竟有多少是自己独立观测的、星表里的一千多颗星是否真由他逐颗测量,从第谷(Tycho Brahe)时代起就一直有争议——但这并不动摇《至大论》作为一部数学杰作的地位。

图片

五、从"会算"到"为什么必然如此"

把四个主题并排看,能看出一个更深的东西。

埃拉托色尼筛法,本质上是一个算法——一套"照着做就能得到答案"的步骤。它回答的是"怎么算"。但希腊数学真正的野心,在欧几里得那里表现得最清楚:光会算还不够,还要证明"为什么这样算一定对"。筛法里那个"做到平方根就可以停"的道理,就是一个可以严格证明的命题;而欧几里得证明"素数有无穷多个",则把"找素数"这个具体操作,抬升成了一个关于整个自然数集合的必然结论。

阿波罗尼奥斯、喜帕恰斯、托勒密做的是同一件事,只是战场换到了几何和天文学。阿波罗尼奥斯把零散的曲线研究整理成几百个被严格证明的命题;喜帕恰斯和托勒密则把"测量天空"从零散的观测,变成一套可以用数学推演、可以复算、可以预测的体系。这一编的标题叫"证明的诞生",指的正是这种转变:知识不再只是经验的积累,而开始要求普遍、必然、可验证的理由。

这四件事之间还有清晰的思想接力。埃拉托色尼和阿波罗尼奥斯几乎是同时代人,都活跃在亚历山大里亚这个知识中心;喜帕恰斯在罗德岛继承并推进了他们的几何成果,尤其是把本轮引入日月模型;托勒密则在三百年后,把这些零件——圆锥曲线式的几何思维、弦表式的数值工具、本轮均轮的机械装置——全部装配进《至大论》。没有前人的弦表和本轮,就没有托勒密的机器;而托勒密的机器,又反过来让前人的几何和三角有了用武之地。

图片

同一时期,希腊之外还有别的数学在独自生长。希腊人走向证明传统的同时,中国、印度、美洲的数学走的是各自独立的路。中国此时已有发达的算筹和十进位值制,正在孕育《九章算术》这样以"算法"和"实用"为中心的著作;印度在天文计算中发展着独立的数表传统;玛雅人则发展出极为精密、且独立使用"零"的历法数学。这些线索在时间上大致平行,却不是同一条河。希腊人把"证明"推到极致,并不意味着其他文明"落后",只是各自选择了不同的、同样深刻的方向。这一点,下一篇会再次碰到。

六、结尾:筛子之后,是什么

回到开头那个问题:埃拉托色尼的筛子,意义到底在哪里?

它证明了一件事——最抽象的东西(素数),可以用最机械、最可靠的方法(筛)来处理。这个想法穿越了两千多年:素数至今仍是现代密码学的基石,而埃拉托色尼的筛法,是最早系统生成素数的方法之一。而在"证明的诞生"这一编里,它代表的是更朴素的一步:先把答案算出来,再问一句"为什么它一定对"。

埃拉托色尼本人死于一场绝食——据较晚的记载,他晚年双目失明,主动选择了结束生命。这是一个凄凉的注脚,但和"他是否真的这么死"一样,都笼罩在传说与史实之间。我们能确定的是,一个在亚历山大里亚图书馆里、同时做着地理、历法、年代学和素数研究的博学者,把一枚小小的"筛子",留给了整个数学史。

顺着他和同时代人的路再往前一步,故事就离开了地中海的希腊世界。下一篇,我们要回到东方,面对一个让学者争论了两千年的问题——《周髀算经》到底成书于何时? 一部以"勾股"和"盖天说"闻名的中国典籍,它的年代判定本身,就是一场关于证据、版本与思想传播的精彩考据。这条时间线,将带着我们自然地从"证明的诞生",走向古代中国的数学世界。

扫描二维码推送至手机访问。

特别声明:

本站属于公益性网站,纯粹个人原因(陪孩子学习便于查询和教授),网站部分内容收集于网络,仅供学生和老师参考、交流使用,请勿用作其他商业收费用途。

如果网站内容能给你带来提升,那便是我经营此网站的初衷。网站相关内容如有问题,请及时提出,我在此谢谢!

本站尊重原创并对原创者的文章表示肯定和感谢,如有侵权请联系删除!针对本站原创内容,本站也欢迎转载,如需转载请注明出处。

本文链接:https://www.yc8.com.cn/wenzhang/202609/5651.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。