购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
古老的算法

乌尔沙那比,登上乌鲁克的城墙,四处走走,

检查地基平台是否坚实,仔细瞧瞧那城砖!

看看那砖石是不是经过了烈火烧制而成,

一定是七大圣贤为之奠基!

一方是城市,一方是果园,

一方是黏土坑,

还有那伊什塔尔神庙的开阔地带。

三方土地加上开阔地带组成了乌鲁克。

作者不详,斯蒂芬妮·达利译
《吉尔伽美什史诗》,约公元前2000年

沙漠几乎吞没了乌鲁克。它的伟大建筑几乎全部被埋在积聚的沙子下,建筑的木材已然崩解。到处都是被风或考古学家刮得光秃秃的黏土砖。这被遗弃的废墟似乎无关紧要,它被遗忘了,变得无用。几乎无法看出,在7 000年前,这片土地是地球上最重要的地方。位于苏美尔地区的乌鲁克,是最古老的城市之一。正是在这里,在苏美尔这片土地上,文明诞生了。

苏美尔位于美索不达米亚南部。该地区以底格里斯河和幼发拉底河为界,北起土耳其山区,南至波斯湾。如今,该地区横跨伊朗与伊拉克边境。那里气候炎热干燥,只有河流平原定期洪水泛滥时才适宜居住。在灌溉技术的帮助下,早期农业在“河流之间的土地”上得以蓬勃发展。由此产生的食物过剩使文明得以延续和繁荣。

苏美尔的国王们建造了伟大的城市——埃利都、乌鲁克、启什和乌尔。在鼎盛时期,乌鲁克曾是6万人的家园。生活的所有方面都在那里展开——家庭和朋友、贸易和宗教、政治和战争。我们能知道这些,是因为文字书写是大约5 000年前由苏美尔人发明的。

铭刻于黏土

文字似乎是从印刻在湿黏土陶筹上的简单记号发展而来的。最初,这些陶筹是用来记录库存与货物交换的。一个陶筹可能等同于一定数量的获得物或者一定头数的牲畜。随着时间的推移,苏美尔人开始在更大的黏土碎片上刻下更复杂的图案。经过几个世纪的发展,简单的象形文字演变成了完整的书写体系。这个体系现在被称为 楔形 (cuneiform)文字。这个名字源于文字独特的“楔形”形状,那是用芦苇笔在湿黏土上压印出来的。符号由几何形状的楔形图案组成。这些铭文是通过在阳光下晒干潮湿泥板来保存的。如今看来,这些泥板颇具美感——楔形文字纤细而优雅,符号规整,文字整齐地排列成行和列。

文字的发明定然改变了当时的社会。这些泥板让跨越空间和时间的交流成为可能。人们可以寄信了。交易可以被记录下来,以备将来参考。文字促进了公民社会的顺利运行和扩张。

此后的1 000年里,楔形文字记录了苏美尔语。公元前24世纪,阿卡德帝国的军队入侵了苏美尔。征服者调整了苏美尔人的书写方式,使其适应征服者自身语言的需要。有一段时间,这两种语言都在泥板上使用。渐渐地,随着政治权力的转移,阿卡德语成为泥板上的唯一语言。

阿卡德帝国延续了3个世纪。 此后,被占领的城邦各自分裂,后来融合成位于北方的亚述和位于南方的巴比伦。公元前18世纪,巴比伦国王汉谟拉比重新统一了美索不达米亚诸城。巴比伦城无可争议地成为美索不达米亚的文化中心。在国王的推动下,城市扩大,建成了令人印象深刻的纪念碑和精美的庙宇。巴比伦成了该地区的超级大国。阿卡德语及其楔形文字成了整个中东地区国际外交的通用语。

经过1 000多年的统治,巴比伦几乎没有抵抗就被波斯国王居鲁士大帝攻陷了。波斯帝国席卷了整个中东地区,其首都在今天的伊朗境内。居鲁士的帝国从博斯普鲁斯海峡一直延伸到巴基斯坦中部,从黑海一直延伸到波斯湾。波斯楔形文字开始在统治工作中占主流。这些新的泥板乍一看与阿卡德泥板相似,但新泥板使用了波斯语和一套完全不同的符号。古老的阿卡德文字使用率逐渐减少。在巴比伦陷落4个世纪后,阿卡德语被弃用了。很快,不再有人能理解古苏美尔语和阿卡德楔形文字符号了。

美索不达米亚的古城市群逐渐被遗弃。废墟之下,埋藏着成千上万块记录着一个失落文明的泥板。2 000年过去了。

终于重见天日

19世纪,欧洲考古学家开始研究美索不达米亚遗址。他们的发掘工作包括探查那里的古代遗址。他们将发掘的文物运回欧洲进一步研究。这些挖掘所得包含了一些刻着符号的泥板。泥板上刻着的像是某种文字,但这些符号到现代已经无法理解了。

亚述学家们开始了破译未知铭文的艰巨任务。那些经常重复出现的特定符号可以被识别和破解,国王和省份的名字变得明确起来。但除此之外,这些文本仍然令人费解。

对于翻译者们来说,贝希斯敦(Bīsitūn)铭文的发现让事情有了转机。贝希斯敦铭文由文字伴随浮雕组成,浮雕描绘了大流士国王对戴手铐的囚犯进行惩罚的场面。从装束来看,这些囚犯来自波斯帝国各地。该浮雕雕刻在伊朗西部扎格罗斯山脉山麓的石灰岩悬崖上,俯瞰着一条古道。贝希斯敦铭文高达15米,宽25米,令人印象深刻。

亨利·罗林森爵士是英国东印度公司的一位官员,在他参观了这个遗址之后,贝希斯敦铭文的意义才变得明确起来。罗林森爬上悬崖,复制了一份铭文上的楔形文字。在此过程中,他发现悬崖上还有两处铭文。不巧的是,那两处都无法靠近。罗林森并不气馁,他于1844年回到了这里,并在当地一个小伙子的帮助下,拓印了其余铭文文本。

这三种文字是用不同的语言写成的——古波斯语、埃兰语和巴比伦语。最关键的是,这三种语言讲述的是同样的内容——国王对权力的掌控和他冷酷无情对待叛军的故事。古波斯语的一部分含义在千百年后仍有人能理解。两年后,罗林森汇编并出版了那部分古波斯语文本的第一部完整译本。

以古波斯语文本的译本作为参考,罗林森和一群组织松散的爱好者成功地破译了巴比伦语文本。这一突破是破解阿卡德和苏美尔泥板上文字意义的关键。

人们重新考察了巴格达、伦敦和柏林的博物馆里的泥板。学者们对一块块泥板上的一个个符号进行研究后,苏美尔语、阿卡德语和巴比伦语的文字被破译了。一个失落已久的文明重见天日。

早期泥板上的信息非常简单。它们记录的是重大事件,如国王的即位或重要战役的日期。随着时间的推移,记录的主题变得更加复杂。传奇故事开始出现,其中有人类最早的书面故事:《吉尔伽美什史诗》。主题也有关于公民社会日常管理事务的,比如法律、法律合同、账户和税收分类账。人们还发现了各个国王和王后之间的往来信件,其中详细记载了贸易协议、王室联姻提议和战争威胁。还有些是私人信件,内容含有情诗和魔法诅咒。在这些日常生活留下的琐碎遗迹中,学者们偶然发现了古代美索不达米亚的算法。

许多现存的美索不达米亚算法都是当时学习数学的学生们随手记下的。下面的这个例子可以追溯到汉谟拉比王朝(公元前1800年—公元前1600年),这个时期现在被称为古巴比伦时期。所属时期是估算出来的,从文本的语言风格和所使用的符号推断而来。这个算法是从碎片上的信息拼凑得来的,这些碎片保存在大英博物馆和柏林国家博物馆。原件的一些部分仍下落不明。

该泥板记录的是一种计算地下蓄水池长度和宽度的算法。文字表述颇为正式,其他古巴比伦算法也是这样。前三行是对要解决的问题进行的简明描述。文本的其余部分是对算法的阐述。算法步骤中交织着一个实例以帮助理解。

一个蓄水池。

深度为3.33,挖出土的体积为27.78。

长度比宽度多0.83。

你应当取深度3.33的倒数,得0.3。

乘以体积27.78,得8.33。

取0.83的一半,再取平方,得0.17。

加8.33,得8.51。

取平方根得2.92。

将这个数字复制得到两个,其中一个加上0.42,另一个减去0.42。

你可以算出3.33是长度,2.5是宽度。

这就是解题全过程。

这个例子中,提出的问题是计算一个蓄水池的长度和宽度,蓄水池可能蓄了水。蓄水池的容积和深度都已确定。蓄水池长度和宽度之间所需的差值已经定好。实际的长度和宽度有待确定。

“你应当”这个短语表示接下来的内容是解决问题的方法。计算结果之后是“这就是解题全过程”的声明,这表示算法到此结束。

这个古巴比伦算法绝不简单。它用容积除以深度,得到蓄水池底部面积。单纯地取这个面积的平方根,就会得到一个正方形底的长度和宽度。必须进行调整才能得到所需的长方形底面。因为对于给定的周长,正方形的面积是最小的,所以长方形底面的面积必然比正方形的略大一些。额外增加的面积按照正方形来计算其面积,正方形的边长等于所需长度和宽度之差的一半。该算法将这个额外的面积添加到正方形底面的面积中。将这两个面积相加得到的更大的正方形,计算其宽度。通过拉伸这个更大的正方形,就得到了想要的长方形。两条长边的长度增加了所需的长宽差的一半。另外两条短边的长度也减少了相同的数值。这样一来就得到了一个正确尺寸的长方形。

以上描述使用的是十进制数。在最初的版本中,巴比伦人使用的是 六十进制数 (sexagesimal)。一个六十进制的数字系统有60个独一无二的数字(0—59)。相比之下,十进制只使用10个数字(0—9)。在这两个系统中,一个数字的数位是由它相对于小数点的位置决定的。在十进制中,从右向左移动,每个数字的值是前一个数字的10倍。这样,我们就有了个位、十位、百位、千位等。例如,十进制数421就等于4个100加2个10加1个1。在六十进制中,从小数点开始从右向左移动,每个数字的值是前一个数字的60倍。反过来,从左向右移动,每一位数值为前一位的六十分之一。因此,六十进制数1 3.20的意思是1个60加3个1加20个六十分之一,等于十进制数 或63.333。看起来,古巴比伦数字系统的唯一优势是表示三分之几比十进制更容易些。

对现代读者来说,巴比伦的数字系统看起来很古怪。然而,其实我们每天都用六十进制来测量时间。1分钟有60秒,1小时有60分钟。凌晨3:04是零点后184(3×60+4×1)分钟。巴比伦的数学里还有另外三个奇怪的现象。第一,小数点并不写出。巴比伦学者必须根据上下文推断它的位置。这肯定是有问题的——想象一个价签上没有美元和美分的区隔是什么情形吧!第二,巴比伦人没有一个表示零的符号。今天,我们通过画一个环(0)来表示为零留下的缺口。第三,除法是通过乘以除数的倒数来做的。换句话说,巴比伦人不是除以2,而是乘以 。在实践中,学生们会参考提前算好的倒数表和乘法表来加快计算速度。

有一块圆形小泥板能显示巴比伦数学的惊人水平。这块编号为YBC 7289的泥板目前存放在耶鲁大学古巴比伦文物收藏中心(图1.1)。它可以追溯到公元前1800年至公元前1600年。这个泥板上绘制了一个正方形,两条对角线分别连接了正方形的两对对角。正方形的边长标为30个单位。对角线的长度记为2的平方根乘以30。

这些标记的数值表明当时的人们懂得毕达哥拉斯定理(勾股定理),你可能在学校里也学过这个。该定理指出,在直角三角形中,斜边(最长的边)长度的平方(一个值自己乘以自己)等于其他两条边长度的平方之和。

这块泥板的真正非凡之处在于,它是在古希腊数学家毕达哥拉斯出生前1 000年刻下来的。对数学家们来说,这一发现就如同在维京人营地里发现了一个电灯泡一样神奇!这引出了关于数学史的基本问题。这个算法是毕达哥拉斯发现的,还是他在旅行中学会的?这个定理是否已被世人遗忘,然后毕达哥拉斯独立地重新发现了它?美索不达米亚人还搞出了什么别的算法?

YBC 7289泥板上记录了2的平方根是1.41421296(按十进制写法)。这很有意思。现在我们知道2的平方根是1.414213562,保留到小数点后九位。值得注意的是,泥板上的数值精确到近乎小数点后七位,即0.0000006。巴比伦人是怎么把2的平方根计算到如此精确的程度的呢?

图1.1 耶鲁大学收藏的泥板7289(YBC 7289,耶鲁大学古巴比伦文物收藏中心提供)

计算2的平方根并不容易。最简单的方法是亚历山大的赫伦(Heron of Alexandria)提出的近似算法。 当然,还有一个小麻烦,那就是赫伦生活在YBC 7289泥板被镌刻出来的1 500年后(约公元10年—公元70年)!我们必须假设巴比伦人发明了同样的方法。

赫伦的算法是把这个问题反过来问。他提出的问题不是“2的平方根是多少”,他提出的问题是“哪个数字自己乘以自己等于2”。赫伦的算法从提出猜测开始,并在多次迭代中不断改进:

对2的平方根提出一个猜测数。

按如下方式重复生成新的猜测数:

2除以当前的猜测数。

所得数字加上当前的猜测数。

除以2得到一个新的猜测数。

当最新的两个猜测数几乎相等时,停止重复。

最新的猜测数就是2的平方根的近似值。

假设这个算法一开始用了个非常糟糕的猜测数:

2。

2除以2等于1。加上2,再除以2得:

1.5。

2除以1.5得1.333。加1.5再除以2得:

1.416666666。

再重复一轮得:

1.41421568。

这就接近真实值了。

这个算法是如何生效的呢?假设你知道2的平方根的真实值。如果你用2除以这个数,结果会与这个数完全相同——2的平方根。

现在,假设你的猜测数大于2的平方根。当你用2除以这个数时,你得到的值就会小于2的平方根。真正的平方根的值就夹在这两个数之间,这两个数一个大于它,另一个小于它。通过计算这两个数字的平均值(总和除以2),可以得到一个改进的估计值。这就得到了两个界值之间的一个值。

这个除法和求平均值的过程可以重复进行,进一步让估计值更准确。经过连续的迭代,估计值会越来越接近真正的平方根的值。

值得注意的是,如果猜测数小于真实平方根的值,这个过程依然适用。在这种情况下,用除法得到的数字过大。同样地,真正的平方根的值就夹在这两个数之间。

直到今天,赫伦的方法还被用来估算平方根。1996年,格雷格·费(Greg Fee)还使用了该算法的一个扩展版本,用于算出2的平方根到小数点后1 000万位。

美索不达米亚的数学家们思虑深远,甚至能想到在他们的算法中使用记忆。他们有一个指令是“把这个数字记在脑子里”,这就是现代计算机数据存储指令的前身。

奇怪的是,巴比伦的算法似乎不包含明确的决策步骤(“如果-那么-否则”)。然而,“如果-那么”规则被巴比伦人用来对非数学知识进行系统化。公元前1754年的《汉谟拉比法典》规定了282条公民应遵守的法律,每条法律论及一种罪行及其惩罚方式:

如果儿子打了父亲,那么他们将砍下儿子的手指。

如果一个人损坏了别人的眼睛,那么他们也必会损坏他的眼睛。

“如果-那么”结构也被用来记录医学知识和迷信。以下迷信说法来自公元前650年左右尼尼微的亚述巴尼拔国王的图书馆:

如果一座城建在了山上,那么这对城中的居民是不利的。

如果一个人不小心踩死了蜥蜴,那么他就能胜过他的敌人。

尽管缺少决策步骤,美索不达米亚人还是通过算法解决了各种各样的问题。他们能推算贷款利息,做出天文学预测,甚至可以解二次方程(含有未知数的2次方的方程)。虽然他们的大多数算法都指向实际应用,但也有少数算法是为了追求数学本身。

优雅和美感

埃及象形文字的发明与美索不达米亚文字书写的发展大致处于同一时期。由于埃及使用易腐烂的纸草卷轴进行书写,埃及数学留存至今的证据极少。现存最著名的记录是亨利·莱因德(Henry Rhind)于1858年在卢克索购买的一张纸草卷轴。莱因德纸草现保存在大英博物馆,是一份原始纸草的古代副本,可以追溯到公元前2000年左右。这个5米长、33厘米宽的案卷记录了一系列算术、代数和几何学问题。虽然它对这些主题的基础概念都有阐述,但其内容在本质上几乎都不是算法。总体而言,算法似乎不是古埃及数学中发展良好的分支。

在波斯帝国崛起后的几个世纪里,希腊世界逐渐在数学领域占据了领导地位。希腊人从美索不达米亚人和埃及人那里学到了很多东西——作为贸易和战争的副产品。

亚历山大大帝(公元前356年—公元前323年)在公元前333年至公元前323年间建立了希腊对整个中东地区的军事统治。他的征服开始于通过军事胜利将希腊诸城邦统一在他的统治之下。随后,这个年轻人征召了一支由32 000名步兵和5 000名骑兵组成的军队,向小亚细亚进军。事实证明,亚历山大是一位杰出的军事战略家和能够鼓舞人心的领袖。他的军队横扫叙利亚、埃及、腓尼基、波斯和阿富汗,占领了一座又一座城市。然后,在公元前323年,在一次习惯性的酗酒之后,亚历山大大帝发烧了。几天后,他在巴比伦去世,年仅32岁。亚历山大庞大的帝国被他的几位将军瓜分。托勒密任埃及总督。他是亚历山大的密友,可能也是他异父或异母的兄弟。

托勒密的第一个决定是把埃及的首都从孟菲斯迁到亚历山大。这座城市是亚历山大本人在埃及一个古老城镇的旧址上建立的,地理位置非常理想。它位于尼罗河三角洲西部边缘的地中海沿岸,其天然港口使海军和商人很容易进入尼罗河。可以用驳船向上游运输货物。骆驼队将上尼罗河与红海连接了起来。亚历山大港依靠贸易繁荣起来。随着埃及人、希腊人和犹太人的涌入,亚历山大成为当时最大的城市。历史学家斯特拉博(Strabo)这样描述亚历山大:

这座城市还有非常美丽的公园和皇家宫殿,它们占据了城市面积的四分之一甚至三分之一。

滨水区有绵延不断的码头、军港、商港和仓库,有通往玛里奥提斯(Mareôtis)湖的运河,还有许多宏伟的寺庙、一个圆形剧场和一个体育场。

简而言之,亚历山大城到处都是公共和神圣的建筑。

托勒密一世下令建造了亚历山大灯塔。作为古代世界七大奇迹之一,巨大的灯塔矗立在法罗斯岛上,成为辽阔的海洋和港口之间的防护堤。这座三层的石塔设计优雅、引人注目,高100米。灯塔信标白天是一面灯塔镜,晚上是火焰,供航运使用。

托勒密还建立了一个名为“缪斯神庙”(Mouseion)的研究机构,也就是博物馆。“缪斯神庙”本质上类似于一个现代研究机构,吸引了地中海沿岸的研究者、科学家、作家和数学家加入。它最出名的建筑就是著名的亚历山大图书馆。这座图书馆存在的目的是成为所有知识的宝库。在慷慨资助的帮助下,它成为世界上拥有最多卷轴收藏的图书馆之一。人们认为在鼎盛时期,该图书馆藏书超过20万册。据说,所有进港的船只都要接受卷轴搜查。发现的任何材料都要被收缴,并在图书馆中增加其副本。亚历山大图书馆成为地中海世界最卓绝的学问中心。

欧几里得可能是最伟大的亚历山大学者。关于欧几里得的生平,人们所知甚少,只知道他在托勒密一世统治时期在城里开办了一所学校。遗憾的是,欧几里得的大部分著作如今已失传,仅有五本书得以流传至今。他的伟大作品《几何原本》是一本数学教科书。该书借鉴了前人的著作,共13章内容,涵盖了几何、比例和数论。在接下来的千百年里,《几何原本》被反复复制和翻译。现在广为人知的欧几里得算法包含在书的第七卷中。

欧几里得算法用于计算两个数的最大公约数(也称为GCD,或最大公因数)。例如,12有6个约数(能整除12的整数),分别是12、6、4、3、2和1。18也有6个约数:18、9、6、3、2、1。因此12和18的最大公约数是6。

两个数的GCD可以通过列出两个数的所有约数并找出两者共有的最大约数找到。这种方法适用于小数字,但对于大数字来说非常耗时。欧几里得想出了一个更快的方法来求两个数的GCD,该方法具有只需进行减法运算的优点。这避免了烦琐的除法和乘法。

欧几里得算法的操作如下:

以一对数字作为输入。

重复以下步骤:

大数字减去小数字。

用得到的值替换一对数字里较大的那个。

当两个数字相等时,停止重复。

这两个数就等于GCD。

以下面两个输入为例:

12、18。

差值是6。差值取代一对数字中较大的那个,也就是取代18。一对数字变成:

12、6。

差值还是6。用新差值替换12,得到新的一对数字:

6、6。

因为两个数字已经相等,所以GCD就是6。

该算法的原理并不是一目了然的。让我们假设你一开始就知道GCD是多少。两个起始数字必须都是GCD的倍数,因为GCD是两者的约数。由于两个输入都是GCD的倍数,所以它们之间的差也必然是GCD的倍数。根据定义,两个输入之间的差值必然小于两个数中较大的那个数。用差值代替较大的数字意味着这对数字缩减了。换句话说,一对数字变得越来越接近GCD。在任何时候,一对数字及其差值都是GCD的倍数。经过多次迭代,差异变得越来越小。最终,差值为零。当该情况发生时,两个数字等于GCD的最小倍数,也就是GCD乘以1。此时,算法输出结果并终止运行。

这个版本的欧几里得算法是迭代运行的。换句话说,它包含了重复的步骤。欧几里得的算法也可以用 递归 (recursion)的形式来表现。递归发生在算法调用自身时,其关键是每当算法调用自己时,输入都会被简化。在多次调用后,输入变得越来越简单,直到最后,答案变得显而易见。递归是一个功能强大的结构。欧几里得算法的递归版本操作如下:

以一对数字作为输入。

大数字减去小数字。

用得到的值替换较大的数字。

如果两个数字相等,

那么输出其中一个数字——它就是GCD,

否则将此算法应用于新的数字对。

这种表达方式没有明确写出重复步骤。算法只是调用对自身的执行。每一次调用,该算法都应用于一个更小的数字对:18和12,然后是12和6,再然后是6和6。最后,输入值相等,返回结果。

欧几里得算法的递归版本是诸多伟大的算法之一。它既有效又高效。然而,这不仅仅是功能上的优点。它还是对称的,具有美感,形式优雅。对于求两个大数字的最大公约数问题,欧几里得算法是一个意料之外的解决方案。它展示出了想象力和才华。所有这些方面铸就了欧几里得算法的伟大。

伟大的算法堪称解惑之诗。

寻找素数

公元前3世纪,埃拉托色尼(Eratosthenes,约公元前276年—公元前195年)被任命为亚历山大图书馆馆长。埃拉托色尼出生在昔兰尼,一个由希腊人建立的北非城市。他早年的大部分时间在雅典度过。中年时,他接受托勒密一世的孙子托勒密三世的委任,负责管理亚历山大图书馆,并教导国王的儿子。

今天,埃拉托色尼因测量地球的周长而闻名于世。他发现,在夏至(一年中白昼最长的一天)当天的正午时分,亚历山大港地面上的一根杆子比位于南边800千米的赛伊尼(现在的阿斯旺)的一根同样高度的杆子投下的阴影要长。通过测量两个城市之间的距离,埃拉托色尼得到了亚历山大和赛伊尼之间地球弧的长度。把这个数字与阴影长度的比值结合起来,他估算出了地球的周长。令人惊讶的是,他将两个城市之间的距离乘以50后得出的数字和地球实际周长误差很小。

作为数学研究的一部分,埃拉托色尼发明了一种寻找素数的重要算法——埃拉托色尼筛法。素数除了其自身和1之外,没有其他的整数因数(能整除它的数)。前五个素数是2、3、5、7和11。

素数难找是出了名的。素数有无穷多个,但它们在数轴上是随机分布的。即使使用现代计算机,发现新的素数也是很耗时间的。一些算法提供了简便的方法,但到目前为止,还没有什么简单方法能找到所有素数。

埃拉托色尼筛法的操作如下:

列出你希望从中找到素数的一串数字,从2开始。

重复以下步骤:

找出第一个没有被圈出来或画掉的数字。

把它圈出来。

画掉这个数字的所有倍数。

当所有的数字都被圈出来或者画掉的时候,停止重复。

圈出来的数字就是素数。

想象一下,试着找出15以内的所有素数。第一步是写下从2到15的所有数字。接下来,圈出2并画掉它的所有倍数:4、6、8等。

然后,圈出3并画掉它的所有倍数:6、9、12、15。

4已经被画掉了,所以下一个圈出的数字是5,继续推进。最终的数字列表是:

通过筛选的数字(也就是圈出来的)都是素数。

埃拉托色尼筛法的一个简便之处是它没有使用乘法。由于倍数是按顺序产生的,一个接着一个,所以可以通过将圈出来的数字重复相加来产生。例如,从2开始重复加2可得到4、6、8等2的倍数,以此类推来计算。

筛法的一个缺点是它需要的存储空间很大。要产生前7个素数,需要存储18个数字。通过只记录某个数字是否被画掉,可以节省存储空间。然而,对于寻找大量素数,筛法的 存储复杂度 就成为一个难题。一台最新的笔记本电脑可以用埃拉托色尼筛法找到小于八位数的所有素数。相比之下,截至2018年3月,已知最大的素数有惊人的23 249 425位数。

300年来,亚历山大博物馆一直是教学和学习的灯塔。此后,缓慢的衰退过程中灾难接连不断。公元前48年,尤利乌斯·恺撒的军队在亚历山大港将他们的船只付之一炬,试图以孤注一掷的方式阻击托勒密十四世的军队。大火蔓延到码头,图书馆的部分区域在大火中遭到损毁。博物馆则在公元272年埃及人的叛乱中受损。塞拉皮斯(Serapis)神庙于公元391年被亚历山大的科普特派教皇提奥菲勒斯(Theophilus)拆除。公元415年,女数学家希帕蒂娅(Hypatia)被一群基督教暴徒杀害。在阿姆鲁·伊本·阿萨尔·萨米( c Amr ibn al- c Aṣal-Sahmi)将军的军队于公元641年控制这座城市后,亚历山大图书馆最终被摧毁。

虽然亚历山大博物馆在6个世纪中一直是古希腊世界最卓越的学问中心,但它并不是逻辑和理性的唯一堡垒。在地中海的另一边,一位孤独的天才发明了一种聪明的算法来计算整个数学中最重要的数字之一。他的算法在近1 000年的时间里都是一枝独秀的存在。 p1Ral2zbSSlz6S2uVsX/44Ps3wMAW1Cs1rvhTT/Y2z0uqRA+roDx0xHhq2Q6V1ed

点击中间区域
呼出菜单
上一章
目录
下一章
×