: a6 I& G' f5 v& |& ?另一個秘密 7 g* i! I7 `2 r! D( h- d
留意在上面的討論中,那個位值倍數其實沒有多大的作用。事實上,如果我們不乘上任何倍數而直接將所有數位加起來,再定出一個核對數位,我們依然可以檢查出輸入資料時(1 處)的錯誤。那麼,我們為甚麼需要加入這個位值倍數呢? 7 A" W' C5 j, v- H4 I5 B! \, r1 L1 R
原來這亦是用來防止一般人一個容易犯上的錯誤,這就是誤將其中的兩個數字的位置對調。例如:將 “H856249(2)” 錯誤地變成 “H856294(2)”。4 W& ^4 Z6 j$ k2 d! t+ k. _3 c k7 o8 w
3 Y$ G n4 T0 \; j& P' o我們再假設正確身份證號碼的核對值為 A,第 k 位的數字為 a,第 k + n 位的數字為 b(a ¹ b;n ³ 1),如果我們錯誤地將 a、b 兩個數字對調了,那麼該核對值便會變成) s* }3 w. z- a! v" r4 _& ?
6 ^' A& p! d7 {) gA - a ´ k - b ´ (k + n) + a ´ (k + n) + b ´ k = A + (a - b) ´ n # q0 n" O. K0 k$ s* o0 y
7 S' {3 q) t& K0 t* u& _/ M同理,a、b 和 n 都祇會是 0 至 9 之間的數字,故此 (a - b) ´ n 這個部分,以至是整個核對值,都不能被 11 所整除,由此可以知道輸入的資料有錯了。留意如果沒有這個位值倍數,我們就無法偵測出這種錯誤了。3 K! ^" F$ A" v