鲜阅

鲜阅

永不终止的质数

{%}

作者/ 马库斯•杜•索托伊(Marcus du Sautoy)

牛津大学数学教授、西蒙义讲座教授,英国工程暨物理研究委员会研究员,英国皇家学会研究员,美国数学学会成员。他是一位不按常理出牌的数学天才,他创造了“流行数学”的概念,将复杂的数字和数学概念用形象生动、通俗易懂的语言表达出来,被誉为“百家讲坛”式的学者。他是BBC科普节目嘉宾、TED演讲嘉宾,《泰晤士报》和《卫报》专栏作家,曾获伦敦数学学会的贝维克奖、皇家学会的法拉第奖,并在2004年被英国《周日独立报》评为英国最杰出的科学家之一,被英国《绅士》杂志列为全英40岁以下最具影响力的百位人物之一。

2,3,5,7,11,13,……这些数字都是质数,即不可分解因子的数字。质数是其他所有数字的基石,就像是数学世界里的氢元素和氧元素。作为数字中的主要角色,它们就像是镶嵌在无穷无尽的数字链条之上的一颗颗闪烁的宝石。

尽管质数十分重要,但仍是人类追求知识的道路上最难解的谜团之一。我们至今无法找到所有质数,因为没有能逐个算出质数的神奇公式。它们就像是埋在地底的宝藏,但无人握有藏宝图。

科幻小说作家为何钟情质数

当科幻小说家想使书中的外星人和地球沟通时,他们往往会碰到一个难题。他们是要假定外星人极其聪明,从而能够轻易掌握地球语言呢,还是要假定他们已经发明出一种“宝贝鱼”1 式的翻译软件,来帮助他们和地球进行沟通呢,或者,干脆设定宇宙中所有的外星人都讲英语呢?

1雅虎的一款在线翻译工具。——编者注

其中一个被许多作家都采纳的解决方案正是数学,他们认为数学是唯一一门真正的宇宙语言,而且在这门语言中,所有人都应该先讲的几个词就是构成这门语言的基石——质数。在卡尔·萨根的小说《接触》中,为SETI(搜寻地外文明计划)工作的爱莉·埃洛维捕捉到一段信号,她意识到这段信号并不是背景噪音,而是一系列的脉冲。她猜测这些脉冲代表的是二进制的数字。通过将其转换为十进制后,她突然发现其中存在着一种模式:59、61、67、71……全是质数。随着信号的持续,她更加确信这一推测,质数列表一路攀升,一直到907。于是,她得出结论,这些信号不可能是随机的。有人正在向我们打招呼。

许多数学家都认为,即使宇宙的另一边存在着不同的生物学,不同的化学,甚至不同的物理学,但是,数学肯定是相同的。即使是围绕着织女星旋转的星球上生存的智慧生物,当他阅读一本讲述质数的数学书时,他仍将59和61视为质数。正如剑桥大学著名数学家戈弗雷·哈罗德·哈代所说的那样,这些数字之所以是质数,“并不是因为我们认为它们是质数,也不是因为人类特定的思维方式使然,而是因为它们本身就是质数,因为数学现实就是这么构建的”。

或许质数是整个宇宙都共通的数字,但是,我想知道类似于刚才我提及的那些故事是否在其他星球上也正在被讲述呢?这种想法还是很有趣的。数千年来,我们研究着这些数字,不断探索出关于这些数字的真相。而且,在发现这些真理的道路中,我们在每一个脚印中都能看到一种特别的文化印记以及历史上特定时期中的数学主旨。那么,在宇宙的其他文化中,是否也发现了另外一些不同的视角,使其探索出一些我们尚不知晓的理论呢?

地外智慧生物

在建议使用质数作为交流手段方面,卡尔·萨根不是第一个,也不会是最后一个。甚至,NASA(美国国家航空航天局)也试图利用质数来和地外智慧生物建立联系。1974年,他们就通过位于波多黎各的阿雷西波无线电望远镜朝着球状的M13星团方向发送了一段讯息。之所以选择M13星团,是因其恒星数量十分庞大,讯息被智慧体接收到的概率也会更大一些。

{%}

阿雷西波无线电望远镜向M13星团发送的讯息

这段讯息包含一系列的数字0和1,它们可以被排列成一张黑白像素的图片。重构的图像中包含以下内容:二进制中从1到10的数字,一段DNA结构的素描,一段表示太阳系的图像,以及一幅阿雷西波无线电望远镜的图像。由于该图像中只包含1679个像素,因此,它的清晰度并不高。但是,选择1679这个数字也是有意为之的,因为其中隐含着重构这些像素的线索。因为1679=23×73,所以要在一个长方形中构建起这幅图像只有两种可能性。23行73列的排列方式会呈现出一片混乱的图像,而23列73行的方式则呈现出正确的图像。M13星团和我们地球之间的距离是25 000光年,因此,今天我们依然在漫长的等待中。就算能够收到回应,也至少要等上50 000年的时间!

质数的书写方式

虽然质数是通用的,但人类书写质数的方式在整个数学史中经历了极大的变化,而且,这些书写方式与特定文化是密切相关的。接下来简短地回顾各大文化中质数的书写方式。

{%}

以下是哪个质数?

{%}

史上最早的数学研究起源于古埃及,上图便是当时的人们书写 200 201的方式。早在公元前6000年,古埃及人便放弃了游牧生活,开始定居在尼罗河沿岸。随着埃及社会日益成熟,人们在记录税收、测量土地和建造金字塔方面对数字的要求也越来越高。就像记载文字那样,埃及人也使用象形字来记载数字。基于10的幂数,他们建立了一套数字体系,如同我们今天使用的十进制系统。(之所以选择10,并非是因为该数字在数学上有特别的重要性,而仅仅是因为人体结构上的一个现实——人类共有10根手指。)不过,他们尚未发明位值体系,这也是书写数字的一种方式,其中每个数字的位置分别对应10的相应幂数。比如,222中的三个2根据它们各自的位置表示的数值也各不相同。事实上,古埃及人需要创造一些新符号来表示每个不同的10的幂数。

{%}

古埃及人对10的幂数的表述符号。其中,10是一根抽象的跟骨,100是一个绳圈,1000则是一棵睡莲

用这种象形字书写200 201这样的数字还算简单,但是,要用象形字书写质数9 999 991,就得罗列出55个符号。尽管古埃及人没有认识到质数的重要性,但他们还是发明了一些成熟的数学理论,包括计算金字塔体积的公式以及分数的概念,这也没什么大惊小怪的。不过他们标记数字的方式并不十分成熟,不同于他们的邻居古巴比伦人使用的方式。

{%}

上图为古巴比伦人书写数字71的方式。和埃及帝国一样,巴比伦帝国也是栖息在一条大河——幼发拉底河周围。公元前1800年,古巴比伦人就控制了当今伊拉克、伊朗及叙利亚的大部分地区。为应付帝国的运营和扩张,古巴比伦人成为管理和掌控数字的大师。他们的文字均记载在泥版上,书写者使用木棍或尖刀在湿泥版上刻下信息,然后泥板会慢慢变干。书写用的刀尖呈V型或楔形,因此,今人也称巴比伦文字为楔形文字。

大约在公元前2000年左右,古巴比伦成为最早使用位值数字系统的文化之一。但是,不同于埃及人使用的10的幂数,古巴比伦人发明出一种基于60的数字系统。其中,从1到59均由不同的符号组合来表示,而当数字达到60时,他们会在数字左侧增加1位,代表整个60,这一点和十进制中当数字超过9时把1放置在十位上的道理相同。上图表示的质数包括1个60和1个表示11的符号,即71。其中,59以内的数字的表示符号也和十进制系统有一些潜在的联系,因为,从1到9的数字均由横线来表示,而10则由以下的符号表示。

{%}

从数学角度看,以60作为底要比以10作为底更合理。60是个很容易拆分的数字,因此在计算方面会更加强大。比如有60颗豆子,我可以用多种不同方式把它们拆分开来:

{%}

拆分60颗豆子的不同方式

如何用手指数出60个数

古巴比伦人选择的底数60在今天的世界中仍留有许多痕迹。比如,1分钟有60秒,1小时有60分钟,1个圆的360度=6×60度。证据显示,古巴比伦人曾以一种相当绝妙的方式,仅用手指便可以一直从1数到60。

我们都知道,人类除拇指外的每根手指均由3块骨头构成。而每只手上除拇指外有4根手指,拇指则可以指到另外4根手指上12块骨头中的任何一块。像这样地,左手可以从1数到12,右手的4根手指则用来表示你一共数过了多少个12(右手可数出4个12,加上左手4根手指上的一个12),这样,通过两只手的合作,我们就可以从1一直数到60了。

举个例子,要表示质数29,用右手的大拇指指向右手表示2个12的那根手指,左手的大拇指指向第5块骨头即可

{%}

古巴比伦人离发现数学中一个十分重要的数字零只有一步之遥。人们用楔形文字书写数字3607时就会遇到一个麻烦。3607是3600,即60的平方,加上7,但是,如果我照此书写的话,结果就会像是一个60加上一个7,虽然67也是质数,但并非我要的那个。为解决这一问题,巴比伦人引入了一个小符号,用来标明该位置无需计数。于是,3607便被写成这样。

{%}

但他们并不把零本身当做一个数字。对他们来说,该符号只是用来表示位值系统中某个特定的60幂数的忽略不计。数学界要继续等待2700年的时间,直到进入公元7世纪,才由印度人首次引入了零这一数字,并对它的属性进行了探讨。古巴比伦人除发明书写数字的绝妙方式以外,还发现了第一个二次方程的解法,今天,每个孩子在学校都会学到这种解方程的方法。另外,对于有关直角三角形的毕达哥拉斯定理,他们也是最早的认识者。但并没有证据显示古巴比伦人知道质数的美妙所在。

{%}

中美洲的玛雅文明于公元200到900年间达到巅峰。整个文明从墨西哥南部一直延伸到危地马拉和萨尔瓦多。为了支持他们高超的天文运算能力,该文明发展出了一种十分成熟的数字系统,上图便是使用该系统书写的数字17。和古埃及人以及古巴比伦人不同的地方在于,玛雅人采用的是一个以20为底的数字系统。他们用1点表示1,2点表示2,3点表示3,就像囚犯在监狱里数日子一样,当写到5时,不再点下第五个点,而是画一条线贯穿之前的那4个点。如此,一条直线便表示数字5。

该系统是依据人类大脑能够快速分辨出较小数量这一特性而设定的,这一点的确十分有趣。我们能很快分辨出一个两个三个四个,但数量再多下去,判断就越来越难了。当玛雅人数到19(3条线4个点)后,他们便创造出一个新的位数来表示20的倍数。而再后面一位,按规律应该用来表示400(20×20)的倍数,但奇怪的是,这位数字却被用来表示360(20×18)的倍数。这种奇怪的安排源于玛雅历。在玛雅历中,一年包含18个月,一个月包含20天。(这样算下来一年只有360天。为了补足差的那5天,玛雅人又增加了一个月份来囊括这5个“坏日子”,这5天被视为凶日。)

有趣的是,和古巴比伦人一样,玛雅人也是用一个特殊符号来表示20的某个特定幂数的忽略不计。该数字系统中的每一位都关联着一位神祗,而每个位置上如果没有放置符号则被认为是对神祗的不敬。因此,玛雅人选择用一幅贝壳图画来表示空。关于该符号的创造,既有数学原因,也有玛雅人的迷信考量。和古巴比伦人相同的是,玛雅人也并未将零本身视为一个独立数字。

由于玛雅人的天文计算涉及漫长的时间周期,他们因此需要一种能够表示庞大数字的系统。其中一个时间周期是通过所谓的长计历来衡量的,该历法起始于公元前3114年的8月11日,使用5位数来计量,因此最长可计算20×20×20×18×20天,即整整7890年。2012年12月21日在玛雅历中是一个重要的日子,在这一天,玛雅历将走到13.0.0.0.0。就像汽车后座上的孩子等待汽车里程表的跳动一样,如今危地马拉人也开始为这一天的到来而兴奋,尽管在一些末日论者的眼中,这一天将是世界毁灭之日。

{%}

虽然以上都是字母而非数字,但这就是希伯来语中13的书写方式。在古犹太的根码替亚释义法传统中,希伯来字母表中的每个字母都有一个数字值。图中,gimel是第三个字母,yodh是第十个字母。于是,将这两个字母组合起来便代表数字13。

通晓犹太卡巴拉奥义的人喜欢玩不同文字中的数字值这样的游戏,以探索其中的关联。比如,我的姓氏的数字值如下:

Mem  resh  kaph  vav  samekh

40 + 200 + 20 + 6 + 60 = 326

词语“man of fame”(名人)以及“asses”(蠢驴)也对应着同样的数值。而之所以数字666被认为是兽名数目2,其中一种解释就是它恰好就是罗马帝国中最凶残的一位皇帝尼禄(Nero)的名字所对应的数字值。

2兽名数目是一个记载于《圣经·启示录》中的特别数目,与“兽名印记”有关,被认为是魔鬼的数字。做广为人知的兽名数目是666。——编者注

虽然质数在希伯来文化中并未凸显出其重要性,但与质数相关的数字的重要性还是被凸显了出来。拿来一个数字,分解出该数字的所有乘法因子(除原数字以外),而且没有余数。如果这些因子相加以后正好得出最初那个数字,那么,该数字便被称为完全数。6是第一个完全数,除6本身以外,它能够分解出的乘法因子包括1、2和3。这三个数字全部加起来就能得到数字6。第二个完全数为28。28的乘法因子包括1、2、4、7和14,这些数字相加之后又得到28。根据犹太人的宗教信仰,世界是在6天内被创造出来的,而在犹太历中的阴历月份中,每个月只有28天。这一现象在犹太文化中发酵,他们相信完全数都具有特殊含义。

这些完全数的数学和宗教属性同样也得到了基督教评论者的注意。圣奥古斯丁(354—430)在他著名的《上帝之城》中写道:“6本身就是个完全数,并非因为上帝在6天内创造了一切。反过来说才是准确的,上帝之所以在6天内创造一切,正是因为该数字是完美的。”

有趣的是,这些完全数背后隐藏着质数的踪迹。每个完全数都对应着一个被称为梅森质数的特殊质数。迄今为止,我们只知道47个完全数,其中最大的一个共有25 956 377位。这些完全数都是偶数,并且都可分解成2n-1(2n–1)。而且只要当2n-1(2n–1)是一个完全数时,其中的(2n–1)必为质数,反之亦然。我们尚未发现任何一个为奇数的完全数。

{%}

你可能认为上图表示的是质数5,它看上去非常像2+3。但实际上,中间的符号并非加号,而是中文里的数字10。以上三个数字放在一起表示两个10加上3,即23。

这种传统的中文书写方式并未使用位值体系,而是为每个不同的10的幂数提供一个符号。但在另外一种用竹签记数的系统中则采用了位值体系。这一系统是从算盘演化而来的。在算盘中,每当前一列里的数字超过10时,便另起一列。

{%}

用竹签记数的系统中数字1到9所对应的符号。

为避免混淆,每隔一位(十位、千位、十万位……),他们会把数字翻个个儿,使竹签竖过来。

{%}

古代的中国人甚至有了负数的概念,正负数分别由不同颜色的竹签来表示。西方对于红黑墨水的使用据说正是来自于中国人对于红黑竹签的运用,但有趣的是,中国人用黑色竹签表示负数。

中国文化可能是最早认识到质数重要性的文化之一。中国人认为每个数字都有性别,偶数为阴,奇数为阳。他们还意识到某些奇数尤其特别。例如,如果有15块石头,你可以用三排五列的方式将其摆成一个规则的长方形;但如果有17块石头,则无法进行这样的排列,你只能将所有石头摆成一条直线。因此,对中国人来说,质数是一些最具阳刚气概的数字。而其他那些非质数的奇数,尽管也是阳性,但多少有些阴柔气质。

这一古中国人的视角捕捉到了质数最本质的属性——若无法将一堆石头排列为一个整齐的长方形的话,那么,石头的数量便为质数。

综上所述,我们了解到古埃及人用青蛙图片来描述数字,古玛雅人使用点和线,古巴比伦人在粘土板上刻字,古中国人排列竹签,而在希伯来文明中,字母中则包含着数字含义。虽然古代中国或许是首个认识到质数重要性的文明,但真正揭示出这些神秘数字神奇之处的则是另外一个文明——古希腊。

{%}

古希腊人发现了一种系统性的筛选较小质数的高效方式,可以很快剔除非质数。首先,依次写下1到100的所有数字。然后剔除掉数字1。(虽然古希腊人将1视为质数,但21世纪的我们不再这么认为。)接下来看第二个数字2,它是第一个质数。然后将2之后每隔一个的数字全部剔除掉。这样便可以一下子将所有2的倍数都筛掉了,也就是剔除掉除2以外的所有偶数。数学家喜欢开玩笑说,因为2是唯一一个偶质数,因此2也是个奇质数3(odd prime)。 不好笑吧?幽默大概并非数学家的强项。

3英语中odd即表示奇数,也表示奇怪。——译者注

{%}

剔除2之后的每隔一个的数字

现在我们看到的最小的而且还未被剔除的那个数字就是3,然后再系统地剔除那些是3的倍数的数字。

{%}

剔除3之后的每隔二个的数字

因为4已经被剔除掉了,我们直接来看数字5,然后将所有数字5以后的每隔四个数字的数字都剔除。接下来就是不断重复这一过程,每次剔除完后,回到前面最小的一个还未被排除的数字n,然后将其后每隔(n-1)个数字的数字都剔除掉:

{%}

最后,我们便得出了100以内的所有质数

上述方法的美妙之处就在于它是非常机械化的,不需要动太多脑力就能完成。比如,数字91是质数吗?如果你使用上述方法,那么你根本就勿需思考。当你在剔除所有7之后的每隔6个数字的数字时,因为91=7×13,它就已经被剔除了。但话说回来,91的确是个不容易确定的数字,通常在我们背乘法表的时候,不会涉及13倍这么大的倍数。

以上这种系统化的操作方法是一个很好的程序算法,即通过采用一套特定指令来解决问题,这便是计算机程序的基本运行原理。这一特定算法出现在两千年前一个活跃的数学发源地:亚历山大港。亚历山大港位于当今埃及境内,是当时古希腊帝国的前哨城市之一,据称拥有全世界最好的图书馆。大约在公元前三世纪,图书管理员埃拉托斯特尼发明了这个最早的用于寻找质数的计算机程序。

它被称为埃拉托斯特尼筛法,因为,在每次剔除非质数的过程中,就好像你在使用一个网格筛子,根据不断出现的新质数设定相应网格之间的间距。第一次使用筛子时,每两条网格相隔1个数字,然后相隔2个,然后相隔4个,以此类推。唯一的问题是当我们尝试筛选较大的质数时,这个方法就不那么高效了。

除了筛选质数以及照管图书馆中的成千上万的纸莎草纸和牛皮纸卷以外,埃拉托斯特尼还计算出地球的圆周长度,以及地球和太阳及月亮之间的距离。他计算出太阳距地球804 000 000个斯塔德,不过他用的这种测量单位让人很难评估数据的准确性。我们应该以哪种运动场的长度作为一个斯塔德呢?是温布利大球场,还是小一点儿的比如洛夫特斯路的球场?

除了测量太阳系的大小以外,埃拉托斯特尼还绘制出了尼罗河的河道图,并首次给出了尼罗河频繁泛滥的准确原因:远在埃塞俄比亚的河流源头处的大雨。他还创作诗歌。尽管他有这么多成就,朋友们还是给他起了一个外号,叫做贝塔,因为他哪件事都不精通。据悉,暮年的他双目失明,绝食自尽。

你现在就可以在蛇梯棋棋盘上实践埃拉托斯特尼筛法,每剔除一个数,就把一截意面放在那个数所在的格子里。剩下的就都是质数了。

美洲蝉为何中意17这个质数

在北美洲的森林里,栖息着一种生命周期十分古怪的蝉类。这些蝉藏于地下长达17年,期间甚少活动,只是吸吮树木的根茎以获得养分。而在第17个年头的五月份,这些蝉只会集体钻出地面,侵入森林,而侵入每英亩4森林的蝉只数量就多达百万。

41英亩约为6.07亩。——编者注

蝉为了获取异性的注意会向着对方鸣叫。数量庞大的蝉只一起和鸣则会制造出极为宏大的噪音,以至于每过17年,当这种蝉进入活跃期时,当地居民往往会暂时搬离,以求耳根清净。鲍伯·迪伦便是因为1970年在普林斯顿大学攻读学位时听到周围森林里出现的刺耳蝉鸣,才写下他那首叫做《蝗虫岁月》的歌曲。

当这些蝉只成功吸引异性并完成交配后,每只雌蝉会在地面上产下大约600只卵。然后,经过6周的狂欢,所有蝉只寿终正寝,森林将重回长达17年的宁静。下一代的蝉卵在仲夏孵化,其幼虫坠落在森林地表,然后钻进泥土中,寻找到根茎以吸取养分。然后,经过又一个17年的轮回,下一场蝉的狂欢将重新上演。

这些蝉能感受到17年的时光流逝,绝对是让人不可思议的生物工程。几乎没有蝉只会提前一年或推迟一年出洞。多数动植物所遵循的年度生命周期都是受气温和季节的变化所影响的。那么这些蝉只每隔17个地球公转周期后现身一次,又是因为什么呢?人们对此并没有确切的解释。

对数学家来说,最令人好奇的一点就是这类蝉选择的数字17是一个质数。它们为什么要选择在地底下度过17年这个质数的周期呢,这仅仅是巧合吗?似乎并非如此。除了此类蝉以外,还有一些种类的蝉会在地下度过13年的时间,另外也有几种喜欢在地下生活7年。上述这些数字全是质数。而如果一只17年周期的蝉确实提早钻出地面,它不会只提早一年,而通常会提早4年,其生命周期也因此转变成13年,这一点颇为惊奇。似乎冥冥中果真有什么质数仙子在协助这些蝉只物种。然而,到底是什么在作祟呢?

科学家对此并没有给出明确的结论,到底蝉类为何青睐质数,这里有一个数学上的推测。首先讲明几点事实。一片森林中只能栖息一个种群的蝉只,因此该解释并不涉及不同种群共享一片森林的情况。在大部分年份中,总会有一种质数蝉种出现在美国某些地区。但是,2009年和2010年则是蝉类销声匿迹的年份。与此相反,2011年,数量庞大的13年周期的蝉种在美国东南部破土而出。(意外的是,2011本身刚好也是一个质数,但我并不认为蝉会聪明到这种程度。)

关于蝉的质数生命周期,迄今为止的最佳推测指出,森林中可能存在着一种蝉类的天敌,周期性地出现,而且其生命周期刚好对应蝉的出土时间,于是,它们便可饕餮不断涌现的美食了。接下来,物种的自然选择便开始发挥作用,保持质数生命周期的蝉类遭遇天敌的机会要远远小于非质数生命周期的蝉类。

{%}

100年内,生命周期为7年的蝉类和生命周期为6年的天敌的遭遇情况

举例来说,假设其天敌每6年出现一次。那么7年生命周期的蝉类则会每42年才遭遇一次该天敌。相反,如果某种蝉类的生命周期是8年,那么其遭遇该天敌的周期则是24年;而生命周期为9年的蝉类与天敌的遭遇机会则更多,每18年就有一次。

{%}

100年内,生命周期为9年的蝉类和生命周期为6年的天敌的遭遇情况

在北美洲广阔的森林里面,究竟哪个物种占据了最大的一个质数,竞争似乎非常激烈。蝉类应对天敌的技巧非常娴熟,以至于其天敌要么饥饿而终,要么迁徙别处,只留下有着奇怪质数周期的蝉类独自狂欢。但蝉类并非世界上唯一一种利用质数作为切分节奏的生物。

数学如何保证互联网的公平交易

除了传递清晰明确的讯息,我们常常也需要用电脑来发送秘密的讯息。过去,苏格兰的玛丽皇后、尼尔森勋爵等试图交换机密信息时,总要事先与他们的代理人会面以商定一种双方将共同使用的密码。

在当今的计算机时代中,我们也常常需要发送一些秘密信息。比如,网上购物时,我们需要向素未谋面的人、向刚刚点击的网站发送我们的信用卡信息。如果依靠以前的方式——人们需要事先见面以商定共用的密码,当然不可能实现互联网交易。幸运的是,数学为我们提供了一种解决方案。

为解释这一点,我们先来看一个简单案例。假设我要在互联网上找人下象棋。我住在伦敦,而对方住在东京,我们想通过投掷硬币来决定谁先谁后。“正面还是反面?”我给对手发了一封电子邮件。他回复说要正面。我掷了硬币。“反面,”我告诉他,“我先来。”可这样怎么能确保在整个过程中我没有撒谎呢? 令人吃惊的是,我们的确可以通过互联网来实现硬币的公平投掷,而个中原理则来自数学中的质数概念。除2以外,所有质数都是奇数(而由于2是其中唯一一个偶数,所以它是个“奇特的”质数)。而如果我们把这些质数除以4,则会得到余数1或3。比如,17除以4得余数1,23除以4则得余数3。

古希腊先贤们在两千年前便已证明出质数的数量是无穷无尽的。但在所有这些质数中,除以4得余数1的质数是否也无穷无尽呢,除以4得余数3的呢?这是皮埃尔·德·费马在350年前向数学家们提出的众多挑战之一,但是,这个问题的答案一直要等到19世纪才由德国数学家古斯塔夫·勒热纳·狄利克雷给出。他通过一些无比复杂的数学运算证明出在所有这些质数中,有一半会得出余数1,另外一半则得出余数3——不存在谁多谁少的现象。当涉及无穷时,数学家们所说的“一半”也并不是一件容易理解的事情。但是,本质上来说,这说明当我们检查小于某个特定数字的所有质数时,其中会有一半在除以4后得出余数1。

因此,一个质数除以4得出余数1或3的几率和一枚公平的硬币掷出正面或反面的几率没有什么不同。为了更加清楚地解释投掷硬币这个问题,我们现在把两个问题互换一下,用除以4得余数1的质数表示硬币正面,而用除以4得余数3的质数表示硬币反面。接下来便是数学的聪明之处。如果我找来2个质数,比如17和41,这2个都能表示硬币的正面,即两者除以4均得到余数1。现在把这2个数字相乘,其结果除以4仍然得到余数1——41×17=697=174×4+1。如果我找2个都表示硬币反面的质数,即除以4得余数3的质数,比如23和43……那么,结果就有点出人意料了。当我把上述2个数字相乘后,所得的数字除以4后得到的余数也是1。23×43=989=247×4+1。这就说明,从质数的乘积中无法得知原来的质数代表正面还是反面。这一现象可以用在投掷“网络硬币”的过程之中。

掷出一枚硬币,如果显示为正面,我就选择2个代表硬币正面的质数,并将这2个数字相乘。如果为反面,便选择2个代表硬币反面的质数,也将这2个数字相乘。掷完硬币及得出乘积后,我就把结果发往位于东京的象棋对手。这个结果是6497。由于质数相乘的结果除以4后所得出的余数永远都是1,那么他便无法从中辨别出我所选择的质数到底是代表正面还是反面的。现在,他得说出是要正面还是反面了。

要知道最后的结果,我只需将所选的两个质数发给他看即可。相乘得出上述数字的两个质数分别是89和73,均代表硬币的正面。由于相乘得出6497的质数除了89和73以外不可能有其他数字,因此,关于数字6497,我已经提供了足够的信息证明自己没有作弊,但是,这个过程并不能保证对方没有作弊。

实际上,这么说并不严谨。如果他能破解出数字6497是由质数89和73相乘得出的,那么他便会押硬币正面,但只要我选择的质数足够大(远远大于两位数),那么,即使借助于现有的计算工具,要破解出源质数也几乎是不可能的。类似的原则也应用在信用卡号码在网络传输的加密流程中。

一个简单的难题

现在我已经掷了硬币,分别从硬币的正面和反面堆中挑出2个质数,再把这2个数字相乘。

结果,得出的数字是13 068 221。那么,你能猜出我刚才掷的硬币是正面还是反面吗?

试着在不借助电脑的情况下回答这个问题。

 

一个很难的难题

要是相乘得出的数字是

5759602149240247876857994004081295363338151725852938901132472828171992

你还猜出我掷的硬币是正面还是反面吗?这次你可以借助于电脑。

答案

答案是正面。13 068 221=3613×3617。3613和3617都是除以4余1的质数。有一种方式可以很快地把该数字分解开来,这是费马发现的一个方法。3615的平方是13 068 225,与我们所探求的数字相差4,而4也是一个平方数。这时可运用一个几何运算法则,a2-b2=(a+b)×(a-b),由此可得出:13 068 221=(3615)2-22=(3615+2)×(3615-2)=3613×3617

本文节选自《神奇的数学》

 

{%}

《神奇的数学》借助人们感兴趣的话题,引出无所不在的数学知识。在本书,你会了解到神秘莫测的质数、变化多端的形状、游移不定的概率、深藏不露的密码、能掐会算的预测术,每章还会介绍一个悬赏百万美元的著名数学难题,仿佛向读者指示一条通往数学科学巅峰的攀登之路。

无处不在的顺序抉择

译者/ Jodoo

你知道有些事情就是这样,一旦接触和了解了,你就会发现它们几乎无处不在!最近,我个人所经历的“问题求解顺序”(problem-solution ordering)就是一个例子。它们呈现为一种此起彼伏的状态:不止存在于我首次遭遇它们的游戏设计环境中,即使是一些不相关的领域,如数学和函数式编程,它们同样随处可见。

尽管如此,我所参与的任何在线社区从未有过针对问题求解顺序话题的明确讨论。所以,我打算尝试着将这一主题定义一下;凭借我个人在这一主题上的些许经验,跟踪这一现象在不同领域的轨迹;当然,我也希望在此过程中,展现一下我对这一主题的初步认识。

游戏设计

就读大学时,我的一位游戏设计老师Richard Lemarchand教授第一次介绍了“问题求解顺序”这一主题。自那时起,该主题的核心思想就一直紧紧伴随着我。之所以会这样,其中很大一部分原因是,这个主题为一类让人倍感困惑的游戏玩家行为模式提供了令人满意的解释。实际上,这类行为模式在我看来,早就屡见不鲜了。

这种游戏玩家的行为模式描述如下:一位新玩家刚进入游戏时,开始四处窥探精心勾画的入门场景。在这一场景中,他得到了一把钥匙,然后走到一扇紧紧关闭的大门前,成功地打开了门锁。接下来,他沿着这条路一直走到头,遇见了第二扇紧闭的大门... 这一次,他完全不知所措。虽然此前,这位玩家已经解决过此类问题,但是再次面对同样的问题时,他为什么突然变得如此困惑呢?

这里所面临的正是一个“问题求解顺序”难题。游戏玩家在入门场景中得到钥匙这件事情,发生在他遇见一扇上锁的大门之前,于是,他对“得到钥匙”与“打开门锁”之间这种看似松散的关系并没有完全理解。在这位玩家的大脑中,“获得钥匙”与“打开大门”分别存储在两处不同的地方,所以这两个事件还没有建立联系。

如果这位玩家首先面对的是一扇上锁的大门,他一定会尝试将其推开。一旦无法取得成功,他会设法找到一把钥匙,并且用它把门打开。在这种情况下,这种看似松散的关系就会在玩家大脑中确立:用钥匙打开上锁的大门。如果没有钥匙,大门就根本无法打开。

当场景不限于“钥匙”和“上锁的大门”时,“顺序抉择”问题就会变得尤为突出。很多游戏玩家觉得,即使一款游戏在引导玩家行为这件事情上做的非常糟糕,依照常识,我们也应该知道使用钥匙打开一扇紧闭的大门。然而真实的情况却是,如果把“钥匙”替换成一枚手榴弹,把“门”换成一台发电机,游戏玩家再次见到发电机时,一定还是会围着它转圈圈或者试图用他们的刀剑毁坏这台设备。

数学教育

很久之前我就发现了游戏设计与教育之间的相似,但是我仍然花费了不少时间才意识到,由“问题求解顺序”引发的的问题在教室发生的次数和在游戏中的次数一样频繁。

不知你是否还能记得,在高中数学课上,有很多很多的学习内容真的让人觉得毫无意义。(如果这类事情尚未发生在你身上,或许你同学之中一定会有人对此有同感。)我经常把这种自觉毫无意义的感受看作是数学教育的副产品。不然的话,它们很可能是问题求解顺序不当在数学教学中造成的一个后果。

请思考一下Dan Meyer给数学教育者提出的一个问题:如果数学是阿司匹林,那么,你应该如何创造头痛呢?

请把你自己想象成一位兜售阿司匹林的药贩。你一定知道,最好的顾客就是那些正在遭受疼痛折磨的人。其实不需要很多疼痛,一点点就行。

最糟糕的一种情景就是,你强迫那些没有任何症状的人服用你的阿司匹林。如果你在他们的生活中正在扮演着某种特殊权威的话,他们也许会感激你,除此之外,他们不仅会觉得服用阿司匹林毫无价值,而且对医学的尊重还将慢慢地减退。

数学不应该给人一种无关痛痒的感觉,数学其实具有很高的价值。或许在工作Y或者工作Z上,数学显得价值微薄,但是数学就其自身而言,肯定意义重大。我们发明新的数学概念,就是为了打破已有数学的局限。所有的数学教育者(包括我在内)面临的最大挑战就是,在我们给学生讲解新的功能强大的数学概念和知识之前,能否先将他们置身于那些旧有的、功能较弱的数学无法解决的,或者不易解决的问题环境中。

换言之,如果在介绍一类问题或者情景之前,你先讲解该解决办法(比如一种新的数学概念或技巧),这个解决办法就会显得随意且乏味。但是如果你首先让学生们尝试使用他们已有的数学知识解决这类问题,他们很可能就会患上一种“智力性头痛”的“疾病”。然后,你再讲解新的解决办法,这时学生们才能更好地理解“阿司匹林”的目的和作用。

函数式编程

在函数式编程中,有一个概念名叫monad(单子)。众所周知,Monad是出了名的抽象。很多学习函数式编程的新手,在试图理解这一概念时,经常会被它绊倒。

实际上,monad这个概念本身并没有那么复杂,难以理解。在现实中,我所见过的绝大多数富有经验的函数式程序员都认为这一概念极其简单。这种情况主要发生在那些新程序员身上,当他们试图理解究竟什么是monad时,经常陷入非常尴尬的境地。

有很多处于中级到高级水平之间的函数式程序员肩负起编写monad教程的职责:他们通过博客文章等形式,企图向所有人揭示monad的秘密。但是绝大多数诸如此类的教程,似乎从来就没有发挥出它们应有的作用。专家们看过这些文章之后,依旧认为monad非常简单,但是那些初学者,阅读完这些教程,还是倍感迷惑。为什么会是这样?这其中的根本原因究竟是什么?

我认为该问题的症结就在于“问题求解顺序”这个关键点上。

Monad是解决代码重复问题的方法。如果你用函数式编程语言编写了足够多的代码,你会慢慢注意到,你所使用的大量看似雷同的代码,其实解决了一堆完全不同的问题。如果可以把它们整合在一起,只编写一次,然后重用这段代码岂不是更好!这样的话,既提高了开发效率,也让代码变得简单整洁。我在这里省略了很多细节,但是这就是monad真正想要完成的工作,也是它的意义所在。

本质上,富有经验的函数式程序员与缺乏经验的新手相比,最重要的差别在于,那些极富经验的函数式程序员已经利用函数式语言编写了大量的代码。他们已经遭遇过无数次这样的情景,并且一直在寻求解决办法。换一种说法,他们已经感受过头痛,知道monad就是消除这种症状的阿司匹林。

从另一个角度来看,初学者只编写过少量代码。他们可能还没有注意到任何重复出现的模式;即使出现过,这种重复还没来及给他们增添麻烦。就是说,头痛症状依然没有出现。

这就是为什么向初学者解释monad这一概念是如此困难的原因。特别是那些“罐装教程”,在没有充分讲解monad作用之前,浪费了大量的时间试图解释什么是monad。Monad只是一种特定问题的解决方案,但是对新手而言,这些问题他们从来没有碰到过。结果就是,他们发觉这一概念乏味无趣、晦涩难懂。这和我们在高中上数学课时所遭受的境遇完全一样。

请记住,有一种最糟糕的情景就是,你强迫那些没有头痛感觉的人服用你的阿司匹林。同样地,我怀疑那些企图给还没有理解为什么需要monad的函数式编程新手“讲授monad”的行为,很可能适得其反,不仅弊大于利,还更进一步加剧了毫无必要的混淆和感知迷惑,让他们误以为monad本质上就是难以理解的。

最后的思考

刻意强化解决问题顺序是真正高效地探究问题的一个显著标志。一个设计良好的探究活动,通过利用初始安排的元素以及其交互特性,可以快速地将用户吸引进来,并且使他们沉浸其中,从而做到引导用户发现自身的潜在问题。亲身经历和体验一个问题能够有效地触发用户(或读者等各类受众)的智力需求(Intellectual need),如果你愿意,也可以称之为“头痛”,而且更重要的是,这为稍后解决方案的引入奠定了坚实的认知基础。

简单谈谈智力需求。如果你对深藏在本文底层的教育理论颇感兴趣,我强烈建议你阅读一下这篇有关数学教室里的智力需求的研究性论文,该文不仅对“智力需求”给出了详细的定义,而且还对其在教育领域的必要性进行了广泛而深入的阐述。

最后,我的一点想法和建议:如果你期望打造令人难忘的课程或者学习之旅,一定要在得到钥匙之前,先行介绍那扇上锁的大门;在兜售阿司匹林之前,详细讲解头痛这种症状;在啰哩啰嗦的隐喻式概述之前,清晰表明想要解决的具体问题。

(好吧,或许在最后一点上,我也应该做到不要自食其言。)

本文选自图灵社区