第1章
你心里有数吗
每当我不得不去看牙医时,我总喜欢找一些能转移自己注意力的消遣活动来度过陌生人在我嘴里捣鼓的时光,通常是进行一些只需动脑就能完成的数字游戏。一次去看牙医的路上,我在Twitter(推特)上发了一个状态,想征求一些不需要动手演算的数学难题。一个朋友回应了我,这个难题是:重新排列1~9这9个数字,使前两个数字组成的数是2的倍数,前3个数字组成的数是3的倍数,以此类推,直到整个数是9的倍数。这个问题只有一个解。
还没在牙医的椅子上坐定,我就已经排除了最普通的排列:123,456,789。虽然12能被2整除,123能被3整除,但也就到此为止了,因为1,234不能被4整除。当牙医折腾好我的牙齿,我已经确定了一些数字,但还没完全排列好。不过,很显然我不能看完牙医后还赖在椅子上不走。回家后,我最终确定了这个问题的唯一解是381,654,729。
[如果不要求用到所有9个数字,并且可以使用0,那么结果就不唯一了,比如480,006就满足要求。这类连续组合的数是可整除的,因而被称为累进可除数(polydivisible number)。我知道的一共有20,456个累进可除数,其中最大的是3,608,528,850,368,400,786,036,725。]
有趣的是,这个问题能做出来只是因为我们目前使用的数据形式刚好合适。如果你把这个难题交给一个古罗马人,那就无法帮助他在看牙时消磨时间了。古罗马人使用的数字与我们不同,比如V和X。更重要的是,这些数字不论出现在数的哪个位置,都代表相同的数值:V永远代表5,X永远代表10。不像我们的计数系统,12中的2代表2,而123中的2代表20。不过好在罗马的牙科足够原始粗暴。
令人尴尬的是,很多数字难题,甚至是我们在学校学习的数学,都只在我们使用的计数系统下才有效。在目前的计数系统中,如果111,111,111与自己相乘,会得到一个赏心悦目的结果:12,345,678,987,654,321(所有数字从1按顺序排至9,然后倒序排至1)。这个规律对于更短的全1数也成立,比如11,111×11,111=123,454,321,111×111=12,321。如果用不同的计数系统书写,上述规律会瞬间消失:111用罗马数字写出来是CXI,但CXI×CXI的结果是不讨喜的X̅MMCCCXXI①。
以上这些事实说明,数字(digit)和数(number)是不同的。比如,数3和数字3虽然看起来完全相同(实际上也的确如此),但它们之间存在微妙的差别。数就是你所认为的那个含义,它是一个很大的类别:3是数,3,435也是数。数是抽象的概念,要写下它们,我们就需要用数字来表达,所以数字只是符号,在书写时用来表示一个数。字母也是这个道理,它们也是符号,是用来书写单词的符号。3,435这个数使用了3、4、5这三个数字。你遇到的数学都可以分成两大类:一类是真正的数学,基于数学内在的本质;另外一类仅仅是巧妙的结果,是我们恰好采用这种书写方式的副产品。
来点好玩的:数字魔术
37魔术(37 Trick)是一个打开本小节的不错的开始(也是让这些内容不像传统数学课的探索方式)。
随便选一个数字写3遍,得到一个类似于333或者888这样的三位数。将写下的3个数字加起来:3+3+3=9或者8+8+8=24。至此只是把数字加起来,并没有什么有趣之处。现在将写下的三位数(333或者888)除以这3个数字之和(9或24),你可以用计算器,也可以通过心算完成计算(计算器肯定更快一点)。无论用什么工具计算,选择什么数字,你总会得到同一个答案:37。这就是所谓的37魔术。
正如我所说,你不管用什么数字开始都可以。但是,选择数字的随机性很快就被抵消,结果确定无疑:当你算到最后,你肯定会得到37。在这背后,是狡猾的代数运算在作祟。将一个数字写3遍等价于将这个数乘以111。比如你选择了8,那么888等于8×111。将3个相同的数字加起来则等于把这个数字乘以3:8+8+8=3×8=24。因此,888除以24就相当于111除以3,因为8被抵消了。同理,其他数字也是一样的。
但其实并非如此。如果一个罗马人选择数字V,那么37魔术的结果就不再是37,也不再被称作37魔术,甚至根本不会被视为魔术。不过幸好,至少在这个问题上,这个“10个数字”的计数系统是目前最常用的。但如果你想打动古巴比伦人,这个魔术可能不是一个好的选择,因为他们的计数方式和我们现在的完全不一样。假如哪天外星人造访地球,他们可能会用各种奇怪的方式计数,那这个小魔术他们肯定也看不懂了。因此,37魔术是数的“根本”性质(那些不会因数的书写方式变化而改变的性质)与现代计数方式的结合。
为什么这么说?唔,111能被3整除的事实与数的书写方式无关。CXI可以被III整除,“一百一十一”也可以被“三”整除,并且不管是哪个星球来的外星人也都应该知道111能被3整除,而且整除的结果总是37(或者XXXVII,或者三十七,或者外星人书写的37)。如果一个石堆有111块石头,你总可以将它分成3堆,每堆37块。数的这种性质与数的表达无关,对数学家来说,这种抽象性质更加重要。
另一方面,“将一个数字写3遍等于将这个数乘以111”这个性质仅仅是我们的书写方式在无意中产生的副产品。在罗马数字中,把一个数字写3遍等于将它乘以3,而不是111(VVV=III×V)。
数学的力量,一部分在于它能以不同的方式来表达普适真理。古玛雅人与古罗马人学的是相同的数学,但是他们采用不同的方式计数,与我们今天的计数方式都不同。为了探索数学世界,我们需要了解每个人使用的语言。让我们从当前使用的计数系统开始探索,尽管它未必是最好的计数系统。
数是什么?
你能用手指数出的最大的数是什么?大多数人数到10就会停下来,因为他们把手指用完了。但并非所有人都采用这种非常局限的计数方式,也就是只伸出手指却不缩回的方式。如果你允许手指缩回,那么你只需要用前两根手指就能数到3。举起第一根手指代表1,第二根手指代表2,同时举起这两根手指就代表3。然后你可以单独举起第三根手指代表4,这样同时举起第一、第三根手指代表5。以此类推,你根本不需要第五根手指就已经可以数到16了。
用这样的计数系统,只用10根手指,你就可以从0数到1,023。但是我们的手指计数器还能再升级。如果考虑手指的3种状态:收回、半伸直、完全伸直,你可以从0数到59,048。再进一步,如果使用4种状态(收回并接触手掌、收回但不接触手掌、半伸直、完全伸直),你可以从0数到1,048,575。只用10根手指就可以数超过100万的数了!我们已经将手指计数器的上限提升了十万多倍,只是你患关节炎的风险可能会增加一些。
来,我们继续。使用8种手指姿势,我们不仅可以获得前所未有的数字敏感度,还可以从0数到1,073,741,823——超过了10亿!不过要小心,比手势的时候别被街头帮派当自己人了。
我的改进就到此为止了,但手指计数的能力到底有多高?对于那些手指和头脑都绝对灵活的人来说,一切皆有可能。
只能数10的手指计数器,和能数到10亿的手指计数器,区别在于各手指不再是计数点,它们的不同姿势才是关键。在一般的计数方式中,每根手指都代表相同的数值(每根手指可以代表1或大于1的数值);在用前两根手指数到3的策略下,第一根手指仍然代表1,但第二根手指代表2。以此类推,第三根手指代表4,第四根手指代表8,第五根手指代表16。可以看到,这里出现了一个数列:每根手指伸直时代表的数是前一根手指的两倍。通过简单的尝试,你会很容易找到用手指的两种状态表示数的方法。(小提醒:132是你手指伸出的最具挑衅意味的数,试试看……还是不要了。)因为每根手指有两个姿势,所以这样的计数系统被称为二进制(binary)计数系统,或被称为以2为基数(base-2)的计数系统。要想写下二进制数,可以用0代表手指缩回的状态,用1代表手指伸直的状态。如果你曾经学过二进制数,那你应该记得二进制的第一位代表1,第二位代表2,第三位代表4,第四位代表8,以此类推。
第三种计数系统是基于手指的3种姿势——缩回、半伸直(或者半缩回,如果你想要听起来消极一点的话)、伸直,所以它被称为三进制(base-3)。以此类推:4种手指状态可以表示四进制(base-4)数;8种手指状态可以表示八进制(base-8)数。现在,我们来归纳一下(请集中注意力):不管是用手表示还是写下来,每种状态代表的数值等于前一种状态代表的数值乘以基数,所以三进制对应的数列是1,3,9,27,…,我们可以用0,1,2这3个数字代表手指的3种状态;而在八进制中,数列变成1,8,64,512,…,我们可以用0、1、2、3、4、5、6、7来代表手指的8种不同状态。在八进制下,10亿被表示为7,346,545,000。
用手指的8种姿势表示10亿的方法(也可以兼做数学帮派的手势)
这些表示数的方式都属于基于数字位置的计数系统。它们和罗马人使用的计数系统完全不同。罗马数字所在的位置不会改变它所代表的数值,数字V永远代表5,不管它出现在什么位置。在十进制数3,435中,数字3分别代表3,000和30,取决于它出现在什么位置。罗马计数系统的空间消耗太大,已经无法满足现代计数需求。数字位置计数系统非常强大,可以轻而易举表示任何数。当然,现代社会几乎完全采用十进制,但我还要再强调一次,这只是万千种选择中的一种。
如果你正在使用不同的进制,一定会有些困惑。在两个使用不同数字的计数系统之间,我可以将一个数来回转换,比如将十进制数转换成罗马数字(例如3,435将变成MMMCDXXXV),你肯定能很清楚地意识到后者数字的写法,就好像把一个词翻译为另一个用完全不同字或字母组成的语言一样,例如,把英语翻译成日语。不过,当你得在使用相同字母的英语和印尼语之间互译时,如果你不知道这个词的语言所属,你可能会觉得自己身处滚烫的空气(air)中。哦不,其实我是说滚烫的水(water)中[英语中的“air”(空气)在印尼语中是“water”(水)的意思]。
我不禁想起一个我忍不住一次又一次地跟别人说的,大家也可能都听过的数学笑话,它与上面所说的误解类似,经常被写到文化衫上:“世界上只有10种人——懂二进制的人和不懂二进制的人。”我来稍微解释一下这里的笑点:“10”在二进制中表示2,所以只有理解二进制的人才知道那不是10,而是2。好了,你可以开始笑了,笑完我们再继续。
不过,我想稍微严厉地吐槽一下这个笑话。因为我作为一位常常讲脱口秀的数学家,总是在听别人讲述这个笑话。通常,人们会这样开始:“来,你听过这个笑话吗?不过这个笑话可能听起来没有笑点,但是……”然后便开始讲述这个只有写下来才能引人发笑的笑话。这是二次元笑话所面对的问题:要么好笑,要么不好笑。不过,不管喜剧效果如何,这个笑话都是一个极好的例子,说明在不同计数系统下,相同的数字及相同的排列顺序如何表达不同的数。
无论如何,我们现在都是十进制的忠实粉丝了。有人说这是因为我们有10根手指:如果你用手指计数,每当数到10,我们都需要重新开始掰手指,并另外记录我们数了多少次“10”。如果让一个朋友帮你记录数到“10”的次数,每当记录到10次“10”,用尽了自己的手指,你就得再找一个朋友帮忙记录数到“100”的次数。以10的倍数进行计数对于人类来说(至少对于有很多朋友的人类来说)似乎是很自然的做法。如果这个假说正确,那么玛雅人可能在计数时得手脚并用,因为他们采用20进制。
这就是我们用同一个英语单词“digit”来表示“数字”和“手指”的原因。②在宇宙中,其他地方的智慧生物可能不长着10根手指。比如说,他们可能演化出了3条手臂,每条手臂末端有4个可以抓握东西的手指状凸起,那他们很可能使用十二进制。
即使在地球,仍有少数人主张人类应该使用十二进制,摒弃十进制。十二进制的拥护者大肆宣扬以12为基数计数的好处(比如,能被12整除的数比能被10整除的数多,所以分数的书写将变得更容易),却没看到这么做带来的社会剧变。如果真的采用十二进制,我们就需要12个数字,所以要在十进制的基础上增加两个数字:一般用“A”代表10,用“B”代表11。于是十进制数3,435在十二进制下将表示为1BA3。
改变进制的可能性微乎其微。十进制已经根深蒂固,其他进制只是数学家们的消遣。只有一个例外,当我们进入计算机领域,其他进制从数学理论进入现实世界。二进制使用的数字很少,只有0和1两个数字,你不会找到比它更简单的计数系统了。这一点对计算机来说非常有用。现代计算机就是建立在这种二元选择基础之上的:导线中要么有电流,要么没有;硬盘中的磁铁也只有南北两极。这一切要么是0,要么是1。幸好,所有的数都可以转换成用一系列1和0表示的二进制序列。
然而,这样却打破了一种平衡:采用的数字既要确保计数系统足够简单好用,又要使数的表达足够高效。对智慧生命(如人类或者外星人类)来说,十进制(或十二进制)很有效。而计算机只有使用数字有限的二进制才能运行:所有智能手机、数字电视,甚至微波炉,都使用二进制进行幕后计数和运算。不过,当需要和人类交互时,它们会体贴地把二进制转换成十进制,以方便人类的使用。
但最初简陋的计算机可没有这么周到。我有幸见到过一位年迈的绅士,他年轻时师从艾伦·图灵(Alan Turing)学习数学,是图灵1954年去世前的最后一位学生。图灵被公认为“计算机之父”,他在曼彻斯特大学工作期间为第一台计算机编写了操作系统,那是最早的计算机操作系统之一。因为图灵自己非常精通二进制,所以很显然,他的第一个操作系统也要求使用者非常精通二进制。虽然后续开发的新操作系统可以将二进制转化成十进制,但图灵自己使用那台计算机的时候,仍然坚持把系统重置回二进制,一直到他死去的那一天。
虽然如今的计算机把二进制深藏在用户交互界面之下,但你仍然可以发现二进制的蛛丝马迹。在使用计算机的过程中,你肯定见过16G或者32G的内存卡、1,024像素的屏幕分辨率,这些数字就蕴含着二进制信息。人类都钟爱“整”数,比如1,000、1,000,000,因为它们看起来很漂亮。电脑也一样:它们喜欢二进制中的“整”数。二进制中的每个数位代表的值都是2的幂数,所以你常常会见到这样的数:2⁵=32、2¹⁰=1,024。
有时,计算机会意外泄露一些十六进制数(比如Wi-Fi初始密码),只不过没有多少人注意到。十六进制(hexadecimal)通常使用0~9的数字以及A~F的字母来表示数。这些数虽然没有2的幂数明显,但它们确实存在。看一下路由器的背面,你会发现初始密码通常由数字0~9及字母A~F组成。再看一下绘图软件或者图像编辑软件的颜色数值,你也会发现十六进制数。那么,你现在知道十六进制数是什么样了,就能时不时在计算机中用的数字里发现含有A~F的数。说不定你还会像我一样梦到它们……
使用十六进制是为了比二进制更加高效地存储数据,但这通常只有程序员或者计算机高级用户才体会得到。因为一般在这些情况下,十六进制才是最佳选择。这可能看起来很奇怪——为什么不简单地用10作为基数呢?这是因为16本身是2的幂数。如果某进制的基数是另一进制基数的幂数,那么在这两个进制间进行数的转换就会非常容易。一般来说,假设两个进制的位值完全不一样,但如果新基数是原基数的幂数,那么只需要减少原先的一些位值,并不会产生新的位值。把数字从二进制转换成十六进制时,二进制数中的每四位数都可以独立地转换成十六进制数的一位数。
部分二进制数与十六进制数的转换,也就是说二进制数1011110000100001可以转换为十六进制数BC21
一旦理解了各种计数系统,将会很容易理解它们深处真正的数学。翻译“外数”(foreign number)要比翻译外语简单得多!19世纪玛雅文明重见天日时,大量晦涩难懂的文字材料也被发掘了出来,在人们读懂这些文字之前,数字却早已被悉数破译——尽管它们是奇怪的二十进制数。如果我们有幸遇到环游星际的外星来客,一旦掌握他们用来表达数字的符号,我们就可以愉快地用数字交流。不过,如果你想跟他们分享一道数学难题,最好找一个与计数系统无关的问题。
沉迷于基数
你能在10和20之间找到不能用连续数(consecutive number)之和表示的数吗?这个问题的答案只有一个。
肯定不是13,因为13=6+7,而6和7是连续数;类似地,18也可以排除,因为18=5+6+7。如果你找到了答案,可以继续在30和40之间寻找。再找到下一个数,它刚好超过60。现在,你应该能发现其中的规律。有趣的是,不管你怎么表达数,“连续数之和”这个问题总是有效的。古罗马人用他们自己的数字可以解答这个问题,古玛雅人也可以解,假如真的有外星人,他们也可以解。
你发现的第一个答案应该是16:连续数的和不能为16。16是这类数字组合中的一员,其他的还有8和32(你可以在本书后面的“疑难解答”中找到这些数字为什么有这种特性)。
如果你想知道有没有在一种特定的计数系统中产生的难题,在另一种计数系统中却不成立,那就让我们回到累进可除数,把所有的非零数字各使用一次,但是用另一个基数不是10的计数系统吧。(如果你得回翻几页书才能想起来什么是累进可除数,别气馁,因为我写到这里的时候也忘了它是什么了。)如果人类演化成另一个模样,使用四进制计数,那么当我躺在牙医的椅子上时,我就能得到两个答案:123和321。五进制下没有解;六进制下又有两个答案(14,325和54,321);七进制下也没有解;八进制下有惊人的3个解(3,254,167、5,234,761和5,674,321);九进制下没有解;十进制下我们已经知道只有一个解(381,654,729);最后一个解是十四进制数:9C3A5476B812D。呼,终于列完了。
我很惊讶十二进制居然没有解。如果我们的天外来客真的使用十二进制(虽然我不知道你是否了解他们,但我觉得人类对他们越来越熟悉了),这个难题将对他们彻底失效。(又找到了一个反对十二进制拥护者的新理由!)我之前写程序寻找这样的数时(花了一个闲暇的周末),十四进制解的突然出现让我非常惊讶:我曾经认为,如果十二进制没有解,那更高的进制也应该没有解。接着我尽可能地对程序进行了优化,让它继续在十五进制、十六进制中寻找答案,但最终没有找到。我不知道十六进制以上有没有解。如果你的时间比我更充裕或者有更高超的编程能力,找到答案后记得告诉我。
把问题放在不同情形下探索,看看会发生什么的行为叫作推广(generalizing),正是这一做法驱使着数学向前发展。数学家总想寻找适用于最多情形的解和规律。在找到一道数学难题的一个解后,事情还远没有结束,你还需要将其推广到尽可能多的情形。在这方面,莱昂哈德·欧拉(Leonhard Euler,瑞士著名数学家、物理学家)和开尔文勋爵(Lord Kelvin,英国著名物理学家、数学家)这样的数学家通过展现这样的好奇心,取得了异于常人的数学成就。相比那些与数字符号及我们使用的进制相关的难题,数学家更喜欢那些纯粹触及数自身性质的难题,那些只在某一进制下才有效的问题总是被当作次品。数学家不喜欢只在十进制中有效的问题,只因为我们有10根手指,他们才对这个计数系统感兴趣。数学探寻的是普适真理,而不是某种计数系统下的特例。
虽说如此,还是有一些只在十进制下成立的数字难题,它们的意义却非常重大。但你别跟英国伟大的数学家G. H.哈代(G. H. Hardy)聊这个。他于1940年指出了一个有趣的事实:在1之后,只有4个数可以表示成该数中所有数字的立方之和。之后,他又认为“这里面没有什么吸引数学家的东西”,所以将其搁置一边。他认为这样的数字难题“更适合放在谜题专栏来娱乐业余爱好者”,数学应该和这些娱乐用谜题划清界限。但不好意思的是,我个人却很喜欢这些无意义的数。
这4个数分别是:
除了1³=1,再没有其他数符合这个等式了,但是没多久,人们便开始推广它们,虽然还是在十进制之下。(所以哈代的声明没能让人放弃解答这个问题。)人们注意到这仅有的4个数居然都是三位数,所以开始寻找能表示成为各数字四次方之和的四位数。(结果有3个数,8,208是其中之一。)因为这些数看起来很“自恋”,总会“审视”自己有多少个数字,所以它们被称为自恋数(narcissistic number)。如果你对此感兴趣,我还可以告诉你54,748是3个五位自恋数之一,而在五位数之外还有很多自恋数。借助于计算机的超强计算能力,你可以找到最大的自恋数。它是一个由39位数字组成的怪物:115,132,219,018,763,992,565,095,597,973,971,522,401。
别再深入下去了,这一点都不好玩。哦,好吧,我再补充几点。不存在两位自恋数:没有哪个两位数可以表示成为各数字的平方和,我确实验证过。所有一位数都是自恋数,因为它们的一次方就是自身,所以它们被称为平凡自恋数。在数学语言中,“平凡”就是“无趣”的意思,也就是说虽然符合条件,但结果很无聊。我们从平凡的解中得不到任何好玩的解。
当然,哈代认为所有自恋数都非常“平凡”。确实,这些数字不能算是最伟大的数学发现,但却是数学大道边上的美丽小道。不过哈代是对的,有趣的数学规律与纯粹巧合的事物应该有明确的区分。当然,只要你能牢记它们受到计数系统的限制,以这种方式来研究数的性质才有趣。研究特定计数系统下的性质,太容易钻入臭名昭著的数字主义了——相信你肯定不想被数字中虚假的性质禁锢吧。别忘了,数学研究的是“数”,而不是“数字”。
这就是数学家已经更加深入,不仅让数学研究脱离计数系统,甚至还要它脱离和任何客观存在之间的联系的其中一个原因。如果你真的想了解什么是“数”,这就是底线。我可以用一堆石块表示数,但也可以选择其他方法。5只鸭子可以代表5,5杯茶也可以,不过这些表示方式都涉及具体的物体。像这样把数学性质或概念从物理现实中分离出来的过程在数学中被称为抽象(abstraction)。但是要从“5个某种东西”中抽象出“5”这一概念并将其描述出来,实际上是很困难的事情。不过,还是有办法的。
数学家已经达成共识,所有包含5个事物的集合被命名为“5”。当我们说到“5”,实际上是在指所有五元组构成的抽象集合③。当我们写下5+3=8,意思是如果我们从“5”这个集合中取出某个五元组,再从“3”这个集合中取出某个三元组,将它们合并起来,会得到一个新的组合,它属于“8”这个集合。这个定义确实具有通用性,但啰唆得很。
数学的通用性意味着如果真有外星来客造访我们渺小的星球,数可能是我们之间唯一共有的东西。我们与其他碳基生物可能无法正常交流,甚至在同一光谱中看到的东西都不一样,但我们仍可以互相交换有关数的难题。如果你真的有幸身处外星人降临的现场,我可以给你两个选择。
第一个是哈代一定不喜欢的选择,也就是3,435这个数。这是一个明希豪森数(Münchhausen number),有点像自恋数,这也是明希豪森数以明希豪森男爵(Baron Münchhausen)的名字命名的原因。明希豪森男爵是18世纪的一位德国人,喜欢长篇大论,自吹自擂自己有多伟大。把明希豪森数的每一位数字做自身位数的乘方,然后求和,得到的结果还是这个数。3,435自然也是如此:3³+4⁴+3³+5⁵=3,435。这是十进制下除了平凡的1以外唯一满足这个条件的数,但其他进制也有这样的数,而且幸运的是,这些数对拥有12根手指的外星人也行得通。在十二进制下,3A67A54832就是一个明希豪森数。但真正的赢家是拥有13根手指的生物,它们有4个明希豪森数(33661、2AA834668A、4CA92A233518和4CA92A233538)。
第二个选择是37魔术,不过需要稍微改一改。虽然它确实和数字有关(而不仅仅与数本身有关),但可以修改成在任意进制下都成立的形式。在任何进制之下,对于一个数字,输入指定次数使其组成一个数,让它除以这几个数字之和,总会得到相同的答案。④所以并不是所有的数字游戏都只在一种进制下成立。好啦,我想这就是基数的全部内容了。
脚注
① 罗马数字上加一横表示这个数乘以1,000。——译者注
② 在英语中,单词“digit”既有数字的意思,也有手指的意思。——译者注
③ 这个集合的每个元素都是一个五元组。——译者注
④ 为了使结果是一个整数,一种做法是取数字的次数为基数减1。例如,对于十进制,基数10减去1等于9,3可以整除9。所以为了在十二进制下得到整数的结果,我们要输入11次数字。