假如人有十二隻手指... (下)

kafat 的照片

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) equiv;
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個正整數的整除性似乎較十進制略為容易。



全 文 完



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

回應瀏覽選項

選擇你喜歡的顯示回應的模式,並點選「儲存設定」,以啟用你所做的改變。
冷眼 的照片

了不起!

了不起!

張海澎 的照片

精彩

謝謝Kafat兄。

張海澎 的照片

我有疑問

(1)整體而言,在日常的四則運算中,什麼進制最好用或最方便?
(2)整體而言,考慮到所有的運算,什麼進制最好用或最方便?

onezls 的照片

在下之见

(四则运算)使用2进制最方便。(立即可得答案不需歌诀)
(其他运算(代数运算))无需理会进制。

在使用电脑后我亦在为人类为什么是10只手指而纳闷。
其实如果人类有8只手指也比10只手指好得多。

張海澎 的照片

我想

如果有某個n進制在主要的計算中比所有的其他進制都方面,人類何不改用這個n進制來計算?從小開始學習n進制,下一代就會習慣了n進制。

十進制有哪些方面是其他進制所沒有的優越性?

onezls 的照片

你想

10进制已经成为标准,在很多方面如果改变将会浪费大量资源(比如钱)。
但未来没有货币的话可能会改变也不一定。

10进制有优越性,即可以利用歌诀(即记忆)一定程度上(不算多也不算少)减少逻辑运算的次数。 可以使用手指进行计算。可以一定程度上减少字符串长度,方便描述和存储。

kafat 的照片

二進制有利有弊

二進制的優點當然是非常簡單,無需記任何歌訣;但從另一個角度看,這種簡單性也同時是它的缺點。由於只有兩個數碼0和1,二進制數字必然是位數多,例如簡單如十進制下的64,在二進制下便要寫成1000000,是一個七位數!因此在二進制下,我們日常生活中很多數字都將會是「天文數字」!這對於電腦來說當然沒問題,但對於人類日常生活的計算來說便不甚方便(尤其是做看不見數字的心算時)。

此外,數碼少和位數長也容易產生訊息傳達上的錯誤。電腦解決這個問題的方法是用「糾錯碼」(Error Correction Code),但很難設想人類在日常語言中也使用「糾錯碼」。

還有一種解決方法是像中文那樣使用一些專門代表數位的詞,例如把10稱為「十」、100稱為「一百」、1000稱為「一千」、10000稱為「一萬」等,但由於位數多,這些詞也相應增多,這些都是在日常生活中使用二進制可能要付出的代價。

kafat 的照片

人類社會的墮性

人類社會的特點是充滿墮性。香港政府推行十進制這麼多年,仍然改不了市民日常生活中的很多度量衡單位,今天大行其道的纖體瘦身廣告便無不使用「磅」。

再如時間表達法,我們的社會便在同時用著不同的進位制!年用十進制;小時和月份用十二進制;星期用七進制;分和秒用「十進和六十進混合制」(不是純粹的「六十進制」,因為表達分秒的具體數字時仍然是用「十進制」數字,例如說48秒,15分鐘)等等;秒以下又用十進制。這樣複雜的進位制雖然非常不方便,但要進行任何更改,恐怕是難如登天。