假如人有十二隻手指...

-十二進制乘除法漫談

1. 引言

我們現時之所以通行十進制,顯然是因為人有十隻手指。10這個數字具有以下算術特性:除了1及其本身外,只 有2和5這兩個因數。大於1且小於10並與10「互質」(Relatively Prime)(註1)的整數共有三個:3、7和9。至於 其他小於10的整數(即4、6和8),它們與10的最大公約數都是2,是一個很小的整數。以上這些特性對我們的乘 除法都有很重要的影響(詳見下文)。

筆者忽發奇想,假如人有十二隻手指並使用十二進制的話,我們的四則運算將會是何種面貌?為何要選擇12? 這是因為12這個數跟10較接近,而且其算術特性似乎較10「有趣」,12的算術特性如下:除了1及其本身外,它 還有2、3、4和6這四個因數。大於1且小於12並與12互質的整數共有三個:5、7和11。至於其他小於12的整數 (即8、9和10),它們與12的最大公約數分別為4、3和2,不像10那樣「單調」。

在十二進制下,我們有十二個數碼(Digit),不妨把它們記作:0、1、2、3、4、5、6、7、8、9、A、B,其中0 至9就是我們熟悉的十進制數碼,A和B分別相當於十進制下的10和11。以下筆者將用下標12來標明十二進制下的 數字(十進制下的數字則沒有標記),以下是十二進制換算為十進制的一個例子:

3B0912 = 3 × 123 + 11 × 122 + 0 × 121 + 9 = 6777

如果我們不是靠「數手指」來做加減法,那麼十二進制下的加減法應較十進制略為複雜,這是因為十二進制的 「加法表」比十進制多了很多項。雖然筆者不是心理學家,但我相信在學過加減法的人的頭腦中其實有一個(不 完整的)「加法表」,這個「加法表」不是我們刻意死記的,而是經過千百次計算後不自覺地進入我們的永久記 憶中,最明顯的例子就是6 + 7,相信很多人都能不假思索地講出6 + 7的答案。當然有些加法是要經過少許思 考的,例如9 + 7的答案便似乎不是我頭腦中「加法表」的一部分,每次遇到9 + 7時,我都會進行一種「進1減 1」的思考,即先在7之前加個1,變成17,然後減1,得16。但無論如何,6 + 7的例子說明了我們頭腦中的確存 在著「加法表」。由於十二進制的「加法表」比十進制複雜,進入我們永久記憶的項目較多,所以我認為十二 進制下的加減法可能較十進制略為困難。

2. 乘法

跟加法不同,每個人在學習乘法時都要刻意背誦「乘法表」(在中國稱為「九因歌」),因此「乘法表 」的複雜程度會直接決定我們學習乘法的難度。在本節筆者將比較十進制下的「九因歌」與十二進制下的 「B因歌」。表面上看,「B因歌」共有11 × 11 = 121句歌訣,比「九因歌」的9 × 9 = 81 句歌訣足足多了40句,「B因歌」似乎比「九因歌」難記得多。可是,如果要背誦的東西有高度規律性,即使數 目很大,也不難記憶,因此我們要比較的應是「九因歌」與「B因歌」的規律性。

在「九因歌」中,1、2和5的歌訣最易記,這是因為這三個數字是10的因數;9雖然不是10的因數,但由於有以 下關係:

9n = 10 × (n − 1) + (10 − n)     (1)

9的歌訣因而具有某種規律性,可以概括為

「九 n (n − 1) 十 (10 − n)」,2 ≤ n ≤ 9

例如「九二一十八」、「九三二十七」...。至於4、6和8,它們的歌訣呈現一種循環性,以4的歌訣為例,如果 我們補上一句附加歌訣「四十中四十」:

四一如四,四二如八,四三一十二,四四一十六,四五中二十,
四六二十四,四七二十八,四八三十二,四九三十六,四十中四十

那麼容易看到下排其實在重覆上排的模式,6和8的歌訣也具有這個特點。這裡其實有一個規律:4、6、8這三個 數字與10的最大公約數都是2,而10 / 2 = 5,所以這三個數字的歌訣每五句出現一個循環。不過,由於這三組 歌訣中的每一組都只出現兩個循環,其規律性不太明顯。上述規律也適用於3和7,由於這兩個數字與10互質, 即與10的最大公約數都是1,而10 / 1 = 10,所以這兩個數字的歌訣只能每十句出現一個循環,即毫無循環可 言。由此可見,3和7的歌訣是最沒有規律的。

我們可以把上述觀察推廣至十二進制的情況。在「B因歌」中,1、2、3、4和6的歌訣也應很易記,因為這些數 字是12的因數;而B的歌訣也應具有規律性,因為如把11和12分別代替(1)中的9和10,(1)仍然成立。由於8、9 、10與12的最大公約數分別為4、3和2,8、9和A的歌訣分別表現為每三句、每四句和每六句出現一個循環。至 於5和7,它們的歌訣應最沒有規律。以下列出「B因歌」的全部歌訣:

11如1,12如2,13如3,14如4,15如5,16如6, 17如7,18如8,19如9,1A如A,1B如B
21如2,22如4,23如6,24如8,25如A,26得10, 27得12,28得14,29得16,2A得18,2B得1A
31如3,32如6,33如9,34得10,35得13,36得16, 37得19,38得20,39得23,3A得26,3B得29
41如4,42如8,43得10,44得14,45得18,46得20, 47得24,48得28,49得30,4A得34,4B得38
51如5,52如A,53得13,54得18,55得21,56得26, 57得2B,58得34,59得39,5A得42,5B得47
61如6,62得10,63得16,64得20,65得26,66得30, 67得36,68得40,69得46,6A得50,6B得56
71如7,72得12,73得19,74得24,75得2B,76得36, 77得41,78得48,79得53,7A得5A,7B得55
81如8,82得14,83得20,84得28,85得34,86得40, 87得48,88得54,89得60,8A得68,8B得74
91如9,92得16,93得23,94得30,95得39,96得46, 97得53,98得60,99得69,9A得76,9B得83
A1如A,A2得18,A3得26,A4得34,A5得42,A6得50, A7得5A,A8得68,A9得76,AA得84,AB得92
B1如B,B2得1A,B3得29,B4得38,B5得47,B6得56, B7得65,B8得74,B9得83,BA得92,BB得A1

為節省空間,上列歌訣全用阿拉伯數字,且沒有加下標12,但都應理解為十二進制下的數字,例如「26得10」 中的「10」便應理解為1012,即等於十進制下的12。

可以看到,跟「九因歌」一樣,在「B因歌」中有兩個數字(5和7)的歌訣最沒有規律,但1、2、3、4、6和B的歌 訣卻很有規律,其餘的8、9和A的歌訣也有較明顯的循環性。總括而言,雖然「B因歌」比「九因歌」多出40句 歌訣,但其規律性似乎足以抵消它相對於「九因歌」的缺點。

3. 除法

本來除法作為乘法的逆運算,沒有單獨討論的必要,不過由於中國傳統的珠算有一種特別的除法歌訣(稱為 「九歸歌」)(註2),拿十進制下的「九歸歌」與十二進制下的「B歸歌」比較一下也是饒有趣味 的事。以下先列出「九歸歌」的全部歌訣:

1逢1進1,1逢2進2,1逢3進3,1逢4進4,1逢5進5, 1逢6進6,1逢7進7,1逢8進8,1逢9進9
21添作5,2逢2進1,2逢4進2,2逢6進3,2逢8進4     
313餘1,326餘2,3逢3進1,3逢6進2,3逢9進3     
412餘2,42添作5,437餘2,4逢4進1,4逢8進2     
51添作2,52添作4,53添作6,54添作8,5逢5進1     
611餘4,623餘2,63添作5,646餘4,658餘2, 6逢6進1   
711餘3,722餘6,734餘2,745餘5,757餘1, 768餘4,7逢7進1  
811餘2,822餘4,833餘6,84添作5,856餘2, 867餘4,878餘6,8逢8進1 
911餘1,922餘2,933餘3,944餘4,955餘5, 966餘6,977餘7,988餘8,9逢9進1

請注意上面對傳統的「九歸歌」作了一些修改。首先,傳統的「九歸歌」凡是「逢X進X」都沒有講清楚當前的 「除數」(Divisor)是甚麼;為清晰起見,我在這些歌訣的首位加上「除數」,例如「1逢1進1」、「2逢2進1」 等。其次,傳統的「九歸歌」是使用「三一三十一」而非上面的「313餘1」;但由於前者容易與乘法歌訣混淆 ,所以我寧可採用後者。第三,傳統的「九歸歌」是使用「九一下加一」而非上面的「911餘1」;但為了使歌 訣的形式更加劃一,我寧可採用後者。

跟「九因歌」一樣,在「九歸歌」中,1、2和5的歌訣最易記。此外,由於

10n = 9n + n     (2)

9的歌訣也很有規律性,可以概括為

「9nn餘n」,1 ≤ n ≤ 8

此外,4、6和8的歌訣也有循環性,但不很明顯。3和7的歌訣按理是最沒有規律的,不過由於3是一個較小的整 數,它的歌訣只有五句,所以影響不大。

以下簡單解釋一下這些歌訣的意義,每一句歌訣的第一個數字代表「除數」,第二個數字(如歌訣不是「X逢X進 X」的形式則須乘大10倍)代表「被除數」(Dividend),第三個數字代表「商數」(Quotient),第四個數字(如有 的話)則代表「餘數」(Remainder)。因此,「21添作5」的意思就是,10 / 2 = 5;「326餘2」的意思就是,20 / 3得商6餘2;「2逢6進3」的意思則是,6 / 2 = 3。

請注意上述「九歸歌」除了第1和第9行外,其他行是不完整的,例如第2行便缺少了「23XXX」,這是因為我們 可以綜合運用「九歸歌」中「X逢X進X」與其他形式的歌訣來做某些除法。以下就讓我們計算74 / 3以示範這些 歌訣的運用(註3),為簡單起見,我們使用以下的俄羅斯式算盤,這種算盤的每檔有10粒珠:

首先把「被除數」74置於算盤最右端,如下圖所示:

上圖中紅色箭頭指著的一檔就是我們當前要處理的一檔(以下簡稱「當前檔」)。由於「除數」是3,我們要運用 3的歌訣。應用「3逢6進2」,先從「當前檔」撥走6粒珠,然後在其左面的一檔(「進」就是指當前左面的一檔) 撥上2粒珠。由於「當前檔」尚餘1粒珠未處理,紅色箭頭仍留在「當前檔」中:

接著應用「313餘1」,把「當前檔」中的1改為3,並在其右面的一檔(「餘」就是指當前右面的一檔)撥上1粒珠 ,紅色箭頭也移至該檔(由此可見,雖然「九歸歌」中沒有「37XXX」的歌訣,但我們可以綜合運用「3逢6進2」 和「313餘1」來做70 / 3):

接著應用「3逢3進1」,先從「當前檔」撥走3粒珠,然後在其左面的一檔撥上1粒珠:

至此我們已完成計算,根據上圖,我們知道74 / 3的結果為24餘2 (註4)。

在十二進制下,我們同樣可以進行珠算,除了要使用每檔12粒珠的算盤外,還要用到以下的「B歸歌」:

1逢1進1,1逢2進2,1逢3進3,1逢4進4,1逢5進5, 1逢6進6,1逢7進7,1逢8進8,1逢9進91逢A進A, 1逢B進B
21添作6,2逢2進1,2逢4進2,2逢6進3,2逢8進4, 2逢A進5     
31添作4,32添作8,3逢3進1,3逢6進2,3逢9進3       
41添作3,42添作6,43添作9,4逢4進1,4逢8進2       
512餘2,524餘4,537餘1,549餘3,5逢5進1,5逢A進2      
61添作2,62添作4,63添作6,64添作8,65添作A, 6逢6進1     
711餘5,723餘3,735餘1,746餘6,758餘4, 76A餘2,7逢7進1    
811餘4,82添作3,834餘4,84添作6,857餘4, 86添作9,87A餘4,8逢8進1   
911餘3,922餘6,93添作4,945餘3,956餘6, 96添作8,979餘3,98A餘6,9逢9進1  
A11餘2,A22餘4,A33餘6,A44餘8,A5添作6, A67餘2,A78餘4,A89餘6,A9A餘8,A逢A進1 
B11餘1,B22餘2,B33餘3,B44餘4,B55餘5, B66餘6,B77餘7,B88餘8,B99餘9,BAA餘AB逢B進1

可以看到,在「B歸歌」中,1、2、3、4、6和B的歌訣最易記,這是因為1、2、3、4和6都是12的因數,而把11 和12分別代替(2)中的9和10,(2)仍然成立。至於8、9和A,它們的歌訣也展現出循環性。最有趣的是,5和7雖 然與12互質,但它們的歌訣卻也似乎具有某種規律性。

據我所知,很多學過珠算的人都只懂加、減和乘法,不懂「歸除法」。我揣測這可能是因為「九歸歌」難記(至 今我還是記不牢6、7、8的歌訣),「B歸歌」的較高規律性或許會令有十二隻手指的人較易學會「歸除法」。

4. 整除性

「整除性」(Divisibility)問題就是有關某一整數能被甚麼整數整除的問題,我們說整數n能被非零 整數m整除(這裡n和m可以是負數)當且僅當存在一個整數k使得n = mk,在「數論」(Number Theory)中,一般把 「m可被n整除」記作

n | m

我們在小學時曾學過一些「整除性判定規則」,以下列出首13個正整數的判定規則(請注意由於7和13 的規則較難應用,所以以下提供兩種規則):

規則1:對任何整數n,都有1 | n。
規則2:若某整數n的最末一位數字可被2整除(即等於0、2、4、6或8),則2 | n。
規則3:若某整數n的各位數字之和可被3整除,則3 | n。
規則4:若某整數n的最末兩位數字可被4整除,則4 | n。
規則5:若某整數n的最末一位數字可被5整除(即等於0或5),則5 | n。
規則6:若某整數n可同時被2和3整除,則6 | n。
規則7a:把某整數n從右到左每3個位分成一節,並計算第1節 − 第2節 + 第3節 − 第4節 + ...,若所得結果可被7整除,則7 | n。
規則7b:把某整數n的個位數截去,再從餘下的數中,減去被截個位數的2倍,若所得結果可被7 整除,則7 | n。
規則8:若某整數n的最末三位數字可被8整除,則8 | n。
規則9:若某整數n的各位數字之和可被9整除,則9 | n。
規則10:若某整數n的最末一位數字可被10整除(即等於0),則10 | n。
規則11:若某整數n的奇位數字之和與偶位數字之和的差可被11整除,則11 | n。
規則12:若某整數n可同時被3和4整除,則12 | n。
規則13a:把某整數n從右到左每3個位分成一節,並計算第1節 − 第2節 + 第3節 − 第4節 + ...,若所得結果可被13整除,則13 | n。
規則13b:把某整數n的個位數截去,再在餘下的數中,加上被截個位數的4倍,若所得結果可被 13整除,則13 | n。

以下是上述規則的一些應用例子。首先看「規則12」的例子,這是「規則3」和「規則4」的結合。由於1728的 末二位數字28可被4整除,並且其各位數字之和1 + 7 + 2 + 8 = 18可被3整除,因此1728可同時被3和4整除, 由此知12 | 1728。其次看「規則11」的例子,由於14641的奇位數字之和是1 + 6 + 1 = 8,偶位數字之和是4 + 4 = 8,這兩者之差8 − 8 = 0可被11整除,因此11 | 14641。接著看7的規則,我們交替使用以上提供 的兩種規則求6049382661能否被7整除。根據「規則7a」,我們先把這個數分為4節:第1節 = 661,第2節 = 382,第3節 = 49,第4節 = 6,然後求661 − 382 + 49 − 6 = 322。接著應用「規則7b」,先把 322的個位數2截去,得32,然後從32減去2的2倍,得28。由於28能被7整除,所以7 | 322,也就是7 | 6049382661。

可是,以上的規則(除了「規則1」外)究竟有何理據?首先考慮「規則8」,給定任何整數n並且其最末三位數字 為m,那麼我們可以把n寫成1000k + m (k可以為0)。若8 | m,則我們可以把m寫成8j。由此有

n = 1000k + m = 8(125k + j)

由於125k + j是整數,所以8 | n。由此證得「規則8」成立,請注意上述證明的關鍵是利用了8是1000的因數這 個事實。利用類似原理,我們也可證明「規則2、4、5和10」也成立。

接著考慮「規則6」,這條規則要用到數論中的以下定理(證明從略):

定理1:設p為整數,若兩整數m與n互質,並且m | p並且n | p,則mn | p。

由於2與3互質,根據「定理1」,可知若某整數p可同時被2和3整除,則p可被6整除,「規則12」也是基於類似 的理據。

接著考慮「規則7b」,給定任何整數n,我們可以把n寫成10a + b (0 ≤ b ≤ 9),其中b就是n的個位數。 把n的個位數截去,再從餘下的數中,減去被截個位數的2倍,我們便可得到a − 2b。若這個數可被7整除 ,則我們有a − 2b = 7k,亦即a = 7k + 2b。由此有

n = 10a + b = 70k + 20b + b = 7(10k + 3b)

由於10k + 3b是整數,所以7 | n。由此證得「規則7b」成立,請注意上述證明的關鍵是利用2 × 10 + 1 可被7整除這個事實。類似地,利用(−4) × 10 + 1可被13整除這個事實,我們可以證明「規則13b 」也成立。

對於其餘的規則,我們要用到「數論」中的「同餘」(Congruence)概念。設n為正整數,我們說兩個 整數p與q是「模n同餘」的(Congruent Modulo n),記作

p ≡ q (mod n)

當且僅當以n除p和以n除q所得餘數相等。舉例說,我們有6 ≡ 9 (mod 3),因為這兩個數都可被3整除(即 以3除這兩個數所得餘數均為0)。請注意我們亦可以把「同餘」定義為(證明從略):

p ≡ q (mod n)當且僅當n | (p − q)     (3)

舉例說,由於2 − (−1) = 3可被3整除,因此根據(3),我們有2 ≡ −1 (mod 3)。根 據「同餘」的定義,我們可以推出以下定理(證明從略):

定理2:設有多項式P(x) = cmxm + cm−1xm−1 + ... + c1x + c0,若a ≡ b (mod n),則P(a) ≡ P(b) (mod n)。

我們可以利用「定理2」來證明「規則11」。設n為任意整數,那麼在十進制下,n可以表達為n = P(10) = cm10m + cm−110m−1 + ... + c110 + c0,其中c0、c1...都是介乎0與9之間的整數,分別為n的個位數、十位 數...。由於10 − (−1) = 11可被11整除,根據(3),我們有10 ≡ −1 (mod 11)。因 此根據「定理2」,我們有P(10) ≡ P(−1) (mod 11),即n = P(10)可被11整除當且僅當 P(−1)可被11整除。但

P(−1) = c0 − c1 + c2 − c3 + ... + (−1)m cm

上式正是n的奇位數字之和與偶位數字之和的差,「規則11」至此得證。請注意上述證明的關鍵是利用10 ≡ −1 (mod 11),類似地,我們亦可利用10 ≡ 1 (mod 3)和10 ≡ 1 (mod 9)來證明「 規則3」和「規則9」。

把以上證明略加修改,便可證明「規則7a」。設n為任意整數,那麼n可以表達為n = P(1000) = cm1000m + cm−11000m−1 + ... + c11000 + c0,其中c0、c1...為介乎0與999之間的整數,分 別為把n從右到左每3個位分成一節後所得的第1節數字、第2節數字...。由於1000 − (−1) = 1001 可被7整除,根據(3),我們有1000 ≡ −1 (mod 7)。因此根據「定理2」,我們有P(1000) ≡ P(−1) (mod 7),即n = P(1000)可被7整除當且僅當P(−1)可被7整除。但

P(−1) = 第1節 − 第2節 + 第3節 − 第4節 + ... + (−1)m第m節

「規則7a」至此得證。類似地,我們亦可利用1000 ≡ −1 (mod 13)來證明「規則13a」。

我們可以把上述原理推廣至十二進制,從而得到十二進制下首13個正整數的「整除性判定規則」如下:

規則112對任何整數n12,都有112 | n12
規則212若某整數n12的最末一位數字可被212整除(即等 於012、212、412、612、812或A12) ,則212 | n12
規則312若某整數n12的最末一位數字可被312整除(即等 於012、312、612或912),則312 | n12
規則412若某整數n12的最末一位數字可被412整除(即等 於012、412或812),則412 | n12
規則512a:把某整數n12從右到左每2個位分成一節,並計算第1節 − 第2節 + 第3節 − 第4節 + ...,若所得結果可被512整除,則512 | n12
規則512b:把某整數n12的最右一位數截去,再從餘下的數中,減去被 截最右一位數的212倍,若所得結果可被512整除,則512 | n12
規則612若某整數n12的最末一位數字可被612整除(即等 於012或612),則612 | n12
規則712a:把某整數n12從右到左每3個位分成一節,並計算第1節 − 第2節 + 第3節 − 第4節 + ...,若所得結果可被712整除,則712 | n12
規則712b:把某整數n12的最右一位數截去,再在餘下的數中,加上被 截最右一位數的312倍,若所得結果可被712整除,則712 | n12
規則812若某整數n12的最末兩位數字可被812整除,則 812 | n12
規則912若某整數n12的最末兩位數字可被912整除,則 912 | n12
規則A12若某整數n12可同時被212和512整除 ,則A12 | n12
規則B12若某整數n12的各位數字之和可被B12整除,則 B12 | n12
規則1012若某整數n12的最末一位數字可被1012整除(即 等於012),則1012 | n12
規則1112若某整數n12的奇位數字之和與偶位數字之和的差可被 1112整除,則1112 | n12

可以看到,由於2、3、4、6和12都是12的因數,上表中的「規則212、312、 412、612和1012」都很簡單,只須看n12的最末一位數字。此 外,由於8和9都是144的因數而144 = 10012,「規則812和912」也很簡單 ,不過它們要看n12的最末兩位數字。「規則B12和1112」則可分別應用12 ≡ 1 (mod 11)和12 ≡ −1 (mod 13)以及「定理2」來證明。至於「規則A12」, 則可以用2與5互質這個事實以及「定理1」來證明。

「規則712a」跟十進制下的「規則7a」相同,這是因為我們有1728 ≡ −1 (mod 7), 而1728 = 100012。此外,由於144 ≡ −1 (mod 5),「規則512a」跟「規 則712a」很相似,所不同者是前者把n12從右到左每2個位(而非每3個位)分成一節。

「規則712b」的原理跟十進制下的「規則7b」相同,即給定任何整數n12,我們可以把 n12寫成1012a12 + b12 (012 ≤ b12 ≤ B12),其中b12就是n12的最右一位數。把 b12截去,再在餘下的數中,加上b12的312倍,便可得到a12 + 312b12。若這個數可被712整除,則我們有a12 + 312b12 = 712k12,亦即a12 = 712k12 − 312b12。由此有(註5)

n12 = 1012a12 + b12 = 7012k12 − 3012b12 + b12 = 712(1012k12 − 512b12)

由此證得712 | n12,即「規則712b」成立。利用相同原理,也可證明「 規則512b」成立。

總括而言,在十進制下,有兩條規則(「規則6和12」)乃由其他規則定義,兩條規則(「規則7a和13a」)涉及三 位數加減運算。而在十二進制下,有一條規則(「規則A12」)乃由其他規則定義,一條規則(「規則 512a」)涉及兩位數加減運算,一條規則(「規則712a」)涉及三位數加減運算。至於其 餘的規則,兩者的難度不相上下。因此從整體而言,在十二進制下判定首13個正整數的整除性似乎較十進制略 為容易。

註1:兩個整數「互質」當且僅當這兩個數的最大公約數為1,即除了1外,沒有其他公約數。

註2:中國的珠算除法有很多種類,以「九歸歌」為代表的「歸除法」只是其中一類,傳統珠算除法還有「撞歸 法」、「飛歸法」等類目。此外,現代中國還發展了多種珠算新除法,本文無法一一介紹。

註3:請注意「九歸歌」只適用於「除數」為一位數的情況,當「除數」多於一位時,我們便要把「九歸歌」與 「九因歌」以及「撞歸法」結合運用,這裡不擬討論這種情況。

註4:如果繼續進行計算,我們將會得到含小數位的答案。請注意當「除數」為n位數時,原來「被除數」的小 數點在完成計算後要向左移n個位。

註5:請注意下式須用到712 × 1012 = 7012、 −3012 + 112 = −2B12以及「B因歌」中的「57得2B」等運算 結果。



刊載本文的網頁