首页 » 12堂魔力数学课 » 12堂魔力数学课全文在线阅读

《12堂魔力数学课》第3章 神奇的数字“9”

关灯直达底部

世界上最神奇的数字

小时候,我最喜欢的数字是9,因为我觉得它有很多神奇的特点。下面,我举一个例子。请大家按照以下步骤完成这个魔术。

第一步:从1到10中选择一个数字(你也可以选择一个大于10的整数,并且可以使用计算器)。

第二步:把这个数字乘以3。

第三步:加上6。

第四步:乘以3。

第五步:如果你愿意,还可乘以2。

第六步:把所有数位上的数字相加。如果和是一位数,魔术表演到此结束。

第七步:如果和是两位数,将这两个数位上的数字相加。

第八步:集中注意力,默念这个得数。

好了,我有一种强烈的感觉:你现在心里想的这个数字肯定是9。我说对了吗?(如果不是,请你检查各个步骤的计算是否有误。)

数字9为什么如此神奇呢?在本章中,我们将见证它的神奇属性,我们甚至会发现,在某个神奇的世界里,12和3的作用竟然完全相同!仔细研究9的倍数,我们可以发现它的第一个神奇特点:

9,18,27,36,45,54,63,72,81,90,99,108,117,126,135,144…

这些数字有什么共同点?把它们所有数位上的数字相加,和似乎都是9。我们任选几个数字检验一下:18的各个数位上的数字之和是1 + 8 = 9,27的各个数位上的数字之和是2 + 7 = 9,144的各个数位上的数字之和是1+ 4 + 4 = 9。但是,不要高兴得太早,因为有一个数字出现了例外情况:99的各个数位上的数字之和是18!不过,18也是9的倍数。因此,我们得出一个结论:

如果某个数字是9的倍数,那么该数的各个数位上的数字之和是9的倍数(反之亦然)。

上小学时,老师可能告诉过你这条规则。在本章中,我们将探讨其中的原理。

举两个例子。数字123 456 789的各个数位上的数字之和是45(9的倍数),因此这个数字是9的倍数。314 159的各个数位上的数字之和是23(不是9的倍数),因此这个数字不是9的倍数。

我们可以借助这条规则,来理解前文中的那个魔术。你先选择一个数字,我们把它记作N。乘以3之后,得到3N。在第三步,你得到3N + 6。再乘以3,即3 (3N + 6) = 9N + 18=9 (N + 2)。如果你决定再乘以2,就会得到18N + 36 = 9 (2N + 4)。无论是否乘以2,最后得数都是某个整数的9倍,因此你的最终答案必然是9的倍数。将它的各个数位上的数字相加,和依然是9的倍数(可能是9、18、27或36),再将这个和的各个数位上的数字相加,得数必然是9。

我经常会对这个魔术稍加改变:请观众准备好计算器,并让他们在以下这些四位数中选择一个,但不要说出来。

3 141,2 718,2 358,9 999

这4个数字分别是π(参见本书第8章)的前四位数、e(参见本书第10章)的前四位数、斐波那契数列(参见本书第5章)的第3项至第6项,以及最大的四位数。然后,请他们任选一个三位数,与他们选择的那个四位数相乘。乘积是一个六位数或者七位数,但你不可能知道。接下来,请他们默想着把乘积的某个数位上的数字圈起来。但圈起来的那个数字不可以是0,因为0本身已经像一个圆了。再请他们按照任意次序,把剩下的数字列出来,同时集中注意力想着那个被圈起来的数字。这时,你只需稍动脑筋,就可以说出他们圈起来的那个数字到底是几。

这个魔术的奥秘是什么?请注意,你在魔术开始时给出的所有4个数字都是9的倍数。与整数相乘后,积仍是9的倍数。因此,所有数位上的数字之和也是9的倍数。在观众向你报数后,你只需将它们相加,把得到的和与观众圈起来的那个数字相加,也应该是9的倍数。例如,假设观众报出的数是5、0、2、2、6和1。这些数字的和是16,与之最接近的9的倍数是18,因此他们圈起来的那个数字必然是2。如果观众报出来的数字是1、1、2、3、5和8,它们的和是20,那么还需要加上7才能凑成27。假设观众报出来的数字之和是18,那么被圈起来的数字是几呢?既然我们告诉他们在圈数字时不要选择0,那么这个数字必然是9。

为什么9的倍数的各个数位上的数字相加之后仍然是9的倍数呢?我们通过一个例子来分析其中的道理。我们可以利用10的整数次幂,把数字3 456变成下面这种形式:

3 456 =3×1 000 +4×100 +5×10 + 6

= 3×(999 + 1) + 4× (99 + 1) + 5× (9 + 1) + 6

= 3×999 + 4×99 + 5×9 + 3 + 4 + 5 + 6

=9的倍数 + 18

= 9的倍数

同理,对于任意一个数字,如果其各个数位上的数字之和是9的倍数,那么这个数字本身也必然是9的倍数(反之亦然,只要某个数字是9的倍数,它的各个数位上的数字之和就必然是9的倍数)。

弃九法与加减乘除运算

如果某个数字的各个数位上的数字之和不是9的倍数,会怎么样呢?例如,我们考虑数字3 457的情况,它的各个数位上的数字之和是19。按照上述步骤,我们可以把3 457写成3×999 + 4 ×99 + 5×9 +7 + 12的形式。由此可以看出,3 457比9的某个倍数多出7 + 12 = 19。由于19 = 18 + 1,这说明3 457比9的某个倍数仅大1。把19的各个数位上的数字相加,和是10,再将10的各个数位上的数字相加,和是1。我把这个过程表示为:

3 457→19→10→1

将一个数字各个数位上的数相加并不断重复该步骤,直至得到一个一位数,这就是所谓的“弃九法”(casting out nines),因为每次相加之后都会减去一个9的倍数。该过程最后得到的那个一位数叫作原始数字的“数根”(digital roots)。例如,3 457的数根是1,3 456的数根是9。简言之,对于任意正数n:

如果n的数根是9,n就是9的倍数。否则,n的数根就是n被9除之后得到的余数。

用代数形式来表示,即如果n有数根r,那么:

n = 9x + r

其中x是整数。弃九法有一个非常有趣的应用,可以用来检验加、减和乘法运算的得数是否正确。例如,如果某个加法运算是正确的,答案的数根就必然与两个加数的数根之和一致。举一个例子,下面是一道加法题:

请注意,两个加数的数根分别是5和6,它们的和是11,11的数根是2。不出所料,这道题的答案134 651的数根也是2。其中的道理可以用下面这个代数式表示:

(9x + r1) + (9y + r2) = 9 (x + y) + (r1 + r2)

如果数根不一致,就说明肯定有哪个地方出错了。切记,即使数根一致,也未必表示你的计算没有错误。但是,这个方法可以帮助你发现大约90%的随机错误。注意,如果你一不小心导致两个数位彼此错位,而数字没有出错,这种检验方法就不管用了,因为在数字正确、数位错位的情况下,数根不会发生变化。不过,如果只有一个数位出错,弃九法就可以找出这个错误,除非这个错误是把0当成了9,或者把9当成了0。在多数相加时,该方法同样有效。例如,假设你买了一堆东西,价格如下:

把答案的各个数位上的数字相加,发现数根是5。所有加数的数根之和是32,32的数根是5,所以两者是一致的。弃九法对减法同样有效。例如,把我们在前面做的加法题改成减法题:

答案48 923的数根是8。把减数和被减数的数根相减,得到5 – 6 = –1。由于–1 + 9 = 8,而且在答案的基础上加(或减)9的倍数都不会改变它的数根,因此我们说这两个数根是一致的。同理,如果减数和被减数的数根之差是0,答案的数根是9时,两者也是一致的。

我们可以利用学到的这些知识,设计一个新的魔术(仿照本书引言中介绍的那个魔术)。请按以下步骤操作,可以使用计算器。

第一步:选择一个任意的两位数或者三位数。

第二步:把各个数位上的数字相加。

第三步:用最初的数字减去第二步得出的和。

第四步:将差的各个数位上的数字相加。

第五步:如果和是偶数,就乘以5。

第六步:如果和是奇数,就乘以10。

第七步:减去15。

你得到的那个数字是75吧?

举个例子。假设你一开始时选择的数字是47,4 + 7 = 11,然后47 –11 = 36,之后3 + 6 = 9。由于9是奇数,乘以10后得到90,90 – 15 = 75。再比如,假设你选择了一个三位数:831。8 + 3 + 1 = 12,831 – 12 = 819,8 + 1 + 9 = 18。由于18是偶数,18×5 = 90,再减去15,得到75。

这个魔术的原理如下。假设你最初选择的那个数字的各个数位上的数字之和是T,那么这个数必然比9的某个倍数多出T。从最初选择的那个数字中减去T,差必然小于999,而且是9的倍数,因此这个差的各个数位上的数字之和是9或18。(例如,如果你一开始时选择的数字是47,各个数位上的数字之和是11。从47中减去11,差为36,它的各个数位上的数字之和是9。)接下来,我们必然与上述各例一样,先得到90(要么是9×10,要么是18×5),再减去15后得到75。

弃九法对乘法同样有效。把上道题中的两个数字相乘,看看会怎么样。

运用第2章介绍的FOIL法则,可以解释弃九法适用于乘法的原因。例如,上例右侧的数根告诉我们,相乘的两个数可以写成9x + 5和9y + 6的形式,其中x、y是整数。

(9x + 5) (9y + 6) = 81xy + 54x + 45y + 30

= 9 (9xy + 6x + 5y) + 30

= 9的倍数 + (27 + 3)

=9的倍数+ 3

尽管除法没有用弃九法检验答案正确与否的惯例,但是我忍不住想向大家介绍一种神奇的方法,来解决除数是9的除法问题。有人把这种方法称作“吠陀法”(Vedic)。我们来看下面这道题:

12 302 ÷ 9

先把它写成这种形式:

接下来,把首位数放到横线之上,在最后一位数上方写一个字母R(表示余数)。

之后,将下式中被圈住的两个数字相加,即1+2=3。因此,我们在商的第二位处写上3。

然后是3 + 3 = 6。

再然后是6 + 0 = 6。

最后,我们算出余数为6 + 2 = 8。

也就是说,12 302 ÷ 9 = 1 366,余数是8。这个办法真是太简单了!下面再举一例,但我会省去某些细节。

31 415 ÷ 9

答案唾手可得!

首位数是3,然后3 + 1 = 4,4 + 4 = 8,8 + 1 = 9,最后9 + 5 = 14。因此,商是3 489,余数为14。由于14 = 9 + 5,所以我们在商上加1,变成3 490,余数是5。

下面这道题非常简单,但是答案非常优美。验算工作由大家自行完成(笔算或者心算都可以)。

111 111÷9 = 12 345 R 6

我们发现,当余数是9或者更大时,我们只需在商上加1,然后从余数中减去9。在进行除法运算的过程中,我们有时也会遇到两位相加之和超过9的问题。在这种情况下,我们可以做一个进位标记,并从两数之和中减去9,然后继续完成后面的步骤。例如,算一下4 821÷9这道题。

第一步在横线上方写上4。由于4 + 8 = 12,因此我们在4的上方写一个1(表示进位),然后从12中减去9,把得数3写在商的第二位上。之后,我们算出3 + 2 = 5,5 + 1 = 6。因此,这道题的答案是535,余数是6。如下图所示:

再举一个多次进位的例子,请计算98 765÷9。

在商的首位处写上9,然后计算9 + 8 = 17,写下进位标记1并减去9后,商的第二位是8。接下来,8 + 7 = 15,做好进位标记后在商的第三位处写上6(15 – 9)。6 + 6 = 12,做好进位标记后在商的第四位处写上3(12 – 9)。最后,算出余数为3 + 5 = 8。算上所有的进位,最后的答案是:商为10 973,余数为8。

延伸阅读

如果你觉得除数是9的除法运算太简单了,那就试试除数是91的除法运算。任意给你一个两位数,你不需要纸和笔,就能很快算出它被91除的商,精确到小数点后多少位都可以,这绝对不是开玩笑!例如:

53÷91 = 0.582 417…

具体来说,答案应该是,数字582 417上方的横线表示这几位数字将不断循环。这些数字是怎么得来的?其实很简单,答案的前半部分相当于这个两位数与11的乘积。利用在第1章学到的方法,我们知道53×11 = 583,再从这个数字中减去1,就得到了582。后半部分是从999中减去前半部分的差,即999 – 582 = 417。由此,我们得到了答案。

再举一例,尝试计算78÷91。由于78×11 = 858,因此答案的前半部分是857。999 – 857 = 142,因此78÷91 =。我们在第1章见过这个数字,因为78 / 91可以化简成6 / 7。

这个方法之所以有效,是因为91×11 = 1 001。因此,在第一个例子中,,而1 / 1 001 =,因此答案中小数点后的循环部分是583×999 = 583 000 – 583 = 582 417。

由于91 = 13×7,因此在做除数是13的除法运算时,我们可以通过化繁法,把它变成分母是91的分数。1 / 13 = 7 / 91,7×11 = 077,因此:

1 / 13 = 7 / 91 =

同理,2 / 13 = 14 / 91 = ,因为14×11 = 154。

书号、互联网金融与模运算

数字9的很多特点都可以扩展至其他数字。在使用弃九法时,我们实际上是用一个数字被9除得到的余数来代替这个数字。用余数代替某个数字的做法,对于大多数人而言并不陌生。从学会看时间开始,我们就在这样做。例如,如果时钟指向8点钟(无论是上午8点还是晚上8点),那么3个小时之后是几点?15个小时之后呢?27个小时之后呢?9个小时之前呢?尽管你的第一反应可能是11、23、35或者 –1,但是就时间而言,这些都表示11点。这是因为这些时间点之间相差12个小时或者12个小时的倍数,数学界将其表示为:

11≡23≡35≡–1(mod 12)

3个小时后、5个小时后、27个小时后或9个小时前,时钟指向几点?

一般而言,如果a、b之间的差是12的整数倍,那么我们说a ≡ b(mod 12)。同理,如果a和b被12除的余数相同,我们也说a ≡ b(mod 12)。推而广之,对于任意正整数m,如果a和b之间的差是m的整数倍,那么我们说a与b对模[1]m同余,记作a ≡ b(mod m)。同理,如果a = b + qm,q是整数,那么a ≡ b(mod m)。

同余的好处是它们彼此之间可以通过加法、减法和乘法等进行模运算,这与普通方程式几乎没有区别。如果a ≡ b(mod m),c是任意整数,那么a + c ≡ b + c,且ac ≡ bc (mod m)成立。如果a ≡ b(mod m),且c ≡ d(mod m),那么a + c ≡ b + d,且ac ≡ bd (mod m)。

例如,14 ≡ 2且17 ≡ 5(mod 12),所以14×17 ≡ 2×5(mod 12),因为238 = 10 + (12×19)。有了这条规则之后,我们就可以对同余进行升幂处理。如果a ≡ b(mod m),就有以下这条幂法则:

a2 ≡ b2,a3 ≡ b3 ,…,an ≡ bn(mod m)

其中,n是任意正整数。

延伸阅读

模运算为什么成立呢?如果a ≡ b(mod m),且c ≡ d(mod m),那么a = b + pm,c = d + qm,p、q是整数。于是,a + c = (b + d) +(p + q) m,所以,a + c ≡ b + d(mod m)。根据FOIL法则,有:

ac = (b + pm) (d + qm) = bd + (bq + pd + pqm) m

因此,ac与bd的差是m的倍数,也就是说ac ≡ bd(mod m)。同余关系a ≡ b (mod m)与自身相乘就会得到a2 ≡ b2(mod m),继续与自身相乘就会推导出幂法则。

正是因为这条幂法则,使得十进制下的9变成了一个非常特殊的数字。由于10 ≡ 1 (mod 9),根据幂法则,10n ≡ 1n ≡ 1 (mod 9)。因此,像3 456这样的数字满足:

3 456 = 3×1 000+4×100+5×10+6

≡ 3×1 + 4×1 + 5×1 + 6 = 3 + 4 + 5 + 6 (mod 9)

由于10 ≡ 1 (mod 3),因此我们把某个数字的各个数位上的数字相加,就可以判断出这个数字是不是3的倍数(或者说出该数被3除的余数)。在不同的进制下,比如十六进制(常用于电气工程和计算机科学),由于16 ≡ 1 (mod 15),因此我们可以把某个数字的各个数位上的数字相加,判断这个数字是不是15(或者3、5)的倍数,或者说出该数字被15除的余数。

现在,我们回到十进制。判断一个数字是不是11的倍数,有一个非常简便的方法。它的依据是:由于10 ≡ –1 (mod 11),10n ≡ (–1)n(mod 11),所以102 ≡ 1 (mod 11),103 ≡ (–1) (mod 11),以此类推。以3 456这个数字为例,该数字满足:

3 456 = 3×1 000 + 4×100 + 5×10 + 6

≡ –3 + 4 – 5 + 6 = 2 (mod 11)

也就是说,3 456被11除的余数是2。因此,判断一个数字是不是11的倍数的一般规则是:当且仅当某个数字各个数位上的数字交替进行减法和加法运算后的结果是11的倍数(例如:0,±11,±22,…)时,这个数字就是11的倍数。31 415是11的倍数吗?通过计算3 – 1 + 4 – 1 + 5 = 10,我们知道它不是11的倍数。但是,31 416这个数字对应的计算结果是11,因此它肯定是11的倍数。

事实上,在生成和验证ISBN码(国际标准书号)时经常会用到与11有关的模运算。假设你的书号是一个十位数(2007年之前出版的图书大多如此),书号的前几位数字表示该书的国别、出版者和书名,但是最后一位数(校验号)的作用是让这些数字满足某种特殊关系。具体来说,如果这个十位数书号符合a–bcd–efghi–j的形式,那么j的作用是确保这个书号满足以下关系:

10a + 9b + 8c + 7d + 6e + 5f + 4g + 3h + 2i + j ≡ 0 (mod 11)

例如,我写作的《心算的秘密》(Secrets of Mental Math)出版于2006年,它的书号是0–307–33840–1。由于154 = 11×14,因此:

10×0 + 9×3 + 8×0 + 7×7 + 6×3 + 5×3 + 4×8 + 3×4 + 2×0 + 1

= 154 ≡ 0 (mod 11)

也许你有一个疑问:如果根据这个规则,校验号必须是10,应该怎么办呢?在这种情况下,校验号会变成Ⅹ,因为这个罗马数字的意思就是10。有了这个特点之后,如果在输入ISBN时输错了某个数字,系统就可以自动检测出来。例如,如果我的书号第三位数被输错,最后的检验结果就会产生8的倍数的偏差,即偏差为±8,±16,…,±80。但是,由于所有这些数字都不是11的倍数(11是质数),因此发生偏差后的检验结果也不可能是11的倍数。事实上,利用代数运算我们可以方便地证明,如果其中两位数字发生错位,系统是可以检验出这个错误的。例如,其他数位都没有错误,但是c和f这两个数位上的数字彼此交换了位置,那么计算结果的偏差全部来自c和f这两项。计算结果本应是8c + 5f,而现在的结果是8f + 5c。两者之间的差是(8f + 5c) – (8c + 5f) = 3 (f – c),它不是11的倍数。因此,新的计算结果也不是11的倍数。

2007年,出版界启用了13位ISBN编码系统,所有的书号都是十三位数,而且采用的是模为10的模运算,而不是之前的模为11的模运算。在这种新的体系下,书号abc–d–efg–hijkl–m必须满足:

a + 3b + c +3d + e + 3f + g + 3h + i + 3j + k + 3l + m ≡ 0 (mod 10)

例如,本书英文版的ISBN是978–0–465–05472–5。简便的验证方法是把奇数位与偶数位上的数字分开,即:

(9 + 8 + 4 + 5 + 5 + 7 + 5) + 3×(7 + 0 + 6 + 0 + 4 + 2)

= 43 + 3×19 = 43 + 57 = 100 ≡ 0 (mod 10)

13位ISBN编码系统可以检测出任何单个数位的错误和大多数(不是全部)连续项位置颠倒的错误。例如,在上面的例子中,如果最后的三位数725误写成275,系统就无法检测到这个错误,因为错位之后的计算结果是110,也是10的倍数。目前,条形码、信用卡和借记卡都采用了模为10的号码验证系统。模运算还在电路和互联网金融安全等方面发挥着重要作用。

你出生那天是星期几?

与数学界的朋友聚会时,我最喜欢表演的魔术是根据他们的生日说出他们是星期几来到这个世界上的。例如,如果某人告诉你她的生日是2002年5月2日,那么你可以立刻告诉她那一天是星期四。随意给出今年或者明年的某一天,你都能计算出它是星期几,这项技能在日常生活中常常要用到。在这一章里,我会教给大家一个秘诀,并解释其中的原理。

不过,在学习这个方法之前,我们先要简单了解一下日历的科学原理与历史变迁。由于地球绕太阳一周需要365.25天,因此一年通常有365天,但每4年就会多一个闰日,即2月29日。(这样一来,4年正好是4×365 + 1 = 1 461天。)两千多年前,尤利乌斯·恺撒据此创建了“儒略历”。比如,2000年是闰年,之后每4年一个闰年,于是,2004、2008、2012、2016…2096年都是闰年。但是,2100年却不是闰年,为什么呢?

原来,一年实际上有365.243天(比365.25天大约少11分钟),因此闰年的出现频率略高于实际情况。地球绕太阳400圈需要146 097天,但是儒略历为它安排了400×365.25 = 146 100天,也就是说,多了3天。1582年,为了规避这个问题(也为了方便地确定复活节的具体日期),罗马教皇格里高利十三世创建了“格里高利历”。当年,一些信奉天主教的国家从日历里删除了10天。例如,西班牙规定,在儒略历1582年10月4日星期四这一天结束之后,就进入格里高利历1582年10月15日星期五。格里高利历规定,可以被100整除的年份不再是闰年,除非它们还可以被400整除。通过这个办法,格里高利历从儒略历中减去了3天。于是,1600年仍然是格里高利历的闰年,但是1700年、1800年和1900年却不再是闰年了。同理,2000年和2400年是闰年,而2100年、2200年和2300年则不是闰年。在这种体系下,每400年里的闰年数量是100 – 3 = 97,总天数是 (400×365) + 97 = 146 097,正好是我们想要的结果。

格里高利历并没有马上被所有国家接受,非天主教国家更是不愿意采用这个新历法。例如,英国及其殖民地国家直到1752年才完成了历法转换,从当年的9月2日星期三直接进入9月14日星期四。(注意,这次转换略去了11天,因为1700年在儒略历里是闰年,但在格里高利历里却不是闰年。)直到20世纪20年代,所有国家才全部弃用儒略历,改用格里高利历。一直以来,历史学者因为这个问题吃了不少苦头。我觉得历史上最有意思的一件事,就是威廉·莎士比亚与米格尔·德·塞万提斯的去世时间相差10天,但他们却都是在1616年4月23日离开人世的。原因在于,那时西班牙已经开始采用格里高利历,而英国仍在沿用儒略历。当塞万提斯于1616年4月23日去世时,莎士比亚尚未离开人世(尽管他的离世时间只比塞万提斯晚了10天),而且他所在的英国那一天的日期是1616年4月13日。

计算格里高利历任意一天是星期几的公式如下:

星期几≡月份代码 + 日期 + 年份代码(mod 7)

我们简单介绍一下该公式各项的含义。因为一个星期有7天,因此公式使用的模为7。例如,如果某个日期距离今天还有72天,由于72 ≡ 2 (mod 7),因此计算该日期是星期几时应该在今天的基础上再加上两天。由于28是7的倍数,如果今天是星期三,那么28天之后的那一天同样是星期三。

我们先介绍星期一至星期天的代码,因为这些代码比较容易记忆。

在“数字—星期几”组合旁边,我给出了辅助记忆的方法[2]。这些方法大多简单明了,无须解释。在记忆“星期三”时,注意观察你伸出来的三根手指,是不是很像字母“W”呢?在记忆“Thursday”时,把它读成“Thor’s Day”,听上去跟“Four’s Day”(4s–day)十分相似。

延伸阅读

一周7天的名称是怎么来的呢?我们知道,这7天是分别按照太阳、月亮以及距离我们最近的五大天体来命名的,这个传统要追溯至古巴比伦。从太阳(Sun)、月亮(Moon)和土星(Saturn),我们可以很容易地想到星期天(Sunday)、星期一(Monday)和星期六(Saturday)。其他几天与星体的联系在法语或西班牙语中表现得比较明显,例如,火星(Mars)变成了Mardi或Martes,水星(Mercury)变成了Mercredi或Miércoles,木星(Jupiter)变成了Jeudi或Jueves,金星(Venus)变成了Vendredi或Viernes。注意,在罗马神话中,Mars、Mercury、Jupiter和Venus还是神的名字。英语有一部分源于德语,而很早以前德国人就把某些天的名称改成了北欧神话中神的名字。于是,Mars变成了Tiw,Mercury变成了Woden,Jupiter变成了Thor,Venus变成了Freya,而Tuesday、Wednesday、Thursday和Friday则变成了星期二、星期三、星期四和星期五的名称。

下表给出了月份代码以及辅助记忆的方法。

①该辅助记忆方法是基于从1月到12月的英文单词、相关节日单词等所包含的字母个数形成的。——编者注
*例外情况:在闰年,1月的代码为5,2月的代码为1

我暂时不解释这些数字是怎么来的,因为我希望大家先学会如何计算。现在,大家只需要知道2000年的年份代码是0。下面,让我们来计算2000年3月19日是星期几。由于3月的月份代码是2,2000年的年份代码是0,根据公式,2000年3月19日满足:

星期几 = 2 + 19 + 0 = 21 ≡ 0 (mod 7)

因此,2000年3月19日是星期天。

延伸阅读

下面,我简要解释一下月份代码的由来。请注意,在非闰年中,2月与3月的代码是相同的。这是有道理的,因为2月有28天,也就是说3月1日比2月1日晚28天,因此这两天在星期几这个方面是一样的。2000年3月1日是星期三,如果我们希望2000年的年份代码是0,同时希望星期一的代码是1,那么3月的月份代码只能是2。因此,在非闰年中,2月的月份代码是2。由于3月有31天,比28天多出3天,因此4月的日历要向后移3天,因此它的月份代码是2+ 3 = 5。在4月的28 + 2天与5这个月份代码的共同作用下,5月的月份代码只能是5 + 2 = 7。由于模为7,因此7可以变成0。按照上述方法,就可以得到其他月份的代码。

另一方面,在闰年中(例如2000年),2月有29天,因此3月的日历要在2月的基础上向前移一天,进而得出闰年2月的代码是2 – 1 = 1。1月有31天,那么1月的代码肯定比2月的代码小3。所以在非闰年中,1月的月份代码是2 – 3 = – 1 ≡ 6 (mod 7);在闰年中,1月的代码是1 – 3 = –2 ≡ 5 (mod 7)。

每过一年,你的生日会变成星期几呢?正常情况下,两个生日之间有365天,你的生日在一周中的位置会向后移1天,这是因为365 = 52×7 + 1,即365 ≡ 1 (mod 7)。但是,如果两个生日之间出现了2月29日(假设你的生日不是2月29日),那么你下一年的生日就会向后移2天。就公式而言,我们只需为逐年的年份代码加1就可以了,但是遇到闰年时,则需要加上2。下表给出了2000—2031年的年份代码。不要着急,这份表是不需要记忆的!

2000—2031年的年份代码(* 表示闰年)

注意观察,年份代码是以0、1、2、3开始的,但跳过了4,直接到5。随后,2005年的代码是6,2006年的代码本应该是7,但由于模为7,所以我们把它简化成0。接着,2007年的代码是1,2008年(闰年)的代码是3,以此类推。利用上表,我们可以判断2025年(下一个完全平方数年份)的“圆周率日”(3月14日)是星期几。

星期几 = 2 + 14 + 3 = 19 ≡ 5 (mod 7) = 星期五

2008年1月1日呢?请注意,2008年是闰年,因此1月的月份代码不是6,而是5。于是:

星期几 = 5 + 1 + 3 = 9 ≡ 2 (mod 7) = 星期二

请注意,表中横排的年份逐列增加8年,而对应的年份代码逐列增加3 (mod 7)。例如,第一行为0、3、6、2[其中2等于9 (mod 7)]。这是因为,每过8年就有2个闰年,因此日历就会后移8 + 2 = 10 ≡ 3 (mod 7)。

我还要告诉大家一条好消息。1901—2099年,每隔28年日历就会重复一次。为什么呢?因为28年里有7个闰年,因此日历会后移28 + 7 = 35天。35是7的倍数,所以这个变化对星期几没有任何影响。(但是,如果28年中含有1900年或者2100年,上面这个说法就不成立了,因为这两年都不是闰年。)因此,通过加减28的倍数,就可以把1901—2099年中的任何年份转变成2000—2027年中的某一年。例如,1983年与1983 + 28 = 2011年的年份代码相同,2061年与2061 – 56 = 2005年的年份代码相同。

因此,在现实生活中遇到相关问题时,我们都可以把年份转换成上表中列出的年份,再利用表中给出的年份代码轻松地完成计算工作。例如,2017年的年份代码为什么是0呢?这是因为2000年的代码是0,从2000年开始至2017年,日历后移了17次,再加上这期间有2004、2008、2012和2016这4个闰年,需要再后移4天,因此2017年的年份代码是17 + 4 = 21 ≡ 0 (mod 7)。那么,2020年呢?这一次共有5个闰年(多了一个2020年),日历后移20 + 5 = 25次。由于25 ≡ 4 (mod 7),因此2020年的年份代码是4。一般而言,2000—2027年中任何年份的代码都可以通过以下步骤确定:

第一步:取年份的后两位数。例如,2022年的后两位数是22。

第二步:用4除这个两位数,忽略余数。(例如,22÷4 = 5,余数为2。)

第三步:将第一步和第二步得出的两个数字相加。(22 + 5 = 27。)

第四步:找出小于第三步得数的7的倍数(包括0、7、14、21和28),从第三步得数中减去最大的那个倍数。(也就是说,对第三步的得数进行模为7的化简运算。)由于27 – 21 = 6,因此2022年的年份代码是6。

注意,第一至第四步适用于2000—2099年中的任何年份。但是,如果我们先从年份中减去28的倍数,使之转化成2000—2027年中的年份,就会降低心算的复杂程度。例如,可以先把2040年转换成2012年,然后进行第一至第四步操作,即可算出年份代码为12 + 3 – 14 = 1。当然,我们也可以直接用2040年来计算,同样会得到40 + 10 – 49 = 1。

这些步骤还适用于21世纪以外的年份。在这种情况下,月份代码不变,唯一需要稍加调整的是年份代码。1900年的代码是1,1900—1999年中的各年份代码比2000—2099年中相应的年份代码正好大1。例如,2040年的代码是1,1940年的代码是2;2022年的代码是6,1922年的代码是7(也可以说是0);1800年的代码是3,1700年的代码是5,1600年的代码是0。(实际上,每过400年日历就会循环一次。因为每400年中正好有100 – 3 = 97个闰年,所以400年后的日历会后移400 + 97 = 497天。由于497是7的倍数,所以星期几是不会改变的。)

1776年7月4日是星期几?要找到2076年的年份代码,我们先减去56计算2020年的代码:20 + 5 – 21 = 4。因此,1776年的年份代码是4 + 5 = 9 ≡ 2(mod 7)。所以,在格里高利历中,1776年7月4日是:

星期几 = 5 + 4 + 2 = 11 ≡ 4 (mod 7) = 星期四

或许,《独立宣言》的签署人需要加快速度,才能尽快完成立法程序,从而过个愉快的周末吧。

延伸阅读

在结束本章之前,我向大家介绍数字9的另一个神奇属性。任取一个各个数位上的数字都不相同而且由小到大排列的数字,例如12 345、2 358、135 789等。将这个数字乘以9,然后将乘积的各个数位上的数字相加。尽管我们知道这个和是9的倍数,但令人吃惊的是,它正好是9。例如:

9×12 345 = 111 105,9×2 358 = 21 222,9×369 = 3 321

即使某些数位上的数字相同,只要各个数位上的数字符合由小到大排列且个位数与十位数不同的原则,那么上述规律都成立。例如:

9×12 223 = 110 007,9×33 344 449 = 300 100 041

这是为什么呢?试着计算9与数字ABCDE的乘积,其中A ≤ B ≤ C ≤ D < E。由于乘数9与乘数(10 – 1)的效果一样,因此这道乘法题与下面这道减法题的得数相同。

从左至右完成减法运算时,由于B ≥ A,C ≥ B,D ≥ C,E > D,因此这道减法题又可以转变为

因此,得数的各个数位上的数字之和是:

A + (B – A) + (C – B) + (D – C) + (E – D –1) + (10 – E) = 9

证明完毕。

[1] 模是mod的音译。——编者注

[2] 该辅助记忆方法是基于星期一到星期天的英文单词读音给出的。——编者注