讀古今文學網 > 12堂魔力數學課 > 第3章 神奇的數字「9」 >

第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或Miercoles,木星(Jupiter)變成了Jeudi或Jueves,金星(Venus)變成了Vendredi或Viernes。注意,在羅馬神話中,Mars、Mercury、Jupiter和Venus還是神的名字。英語有一部分源於德語,而很早以前德國人就把某些天的名稱改成了北歐神話中神的名字。於是,Mars變成了Tiw,Mercury變成了Woden,Jupiter變成了Thor,Venus變成了Freya,而Tuesday、Wednesday、Thursday和Friday則變成了星期二、星期三、星期四和星期五的名稱。

下表給出了月份代碼以及輔助記憶的方法。

1該輔助記憶方法是基於從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] 該輔助記憶方法是基於星期一到星期天的英文單詞讀音給出的。——編者注