' Z4 I( s, {$ l$ J事實上,如果一個身份證號碼的正確核對值為 A,而在輸入資料時,(由右邊數起的)第 k 個位原本是 a,但現在錯入成 b(a ¹ b),那麼該核對值將會變成. @4 `# l% ]8 R2 a" D F
* [/ a4 o/ U7 i. a9 q
A - a ´ k + b ´ k = A + (b - a) ´ k - _; p( y/ Z$ V: a8 W p; Z* t/ O* m# m3 w' o
留意在這裏,除非錯誤發生在第一個位的英文字母上,否則 (b - a) 的絕對值和k都祇會是 1 至 10 之間的數字,不會大於 11,故此 (b - a) ´ k 這個部分,不可能被 11 整除。但因為 A 本身可以被 11 整除,所以整個核對值 A + (b - a) ´ k,便不能被 11 所整除了。由此可以知道輸入的資料有錯。0 O6 m3 k& k6 |$ @/ n5 a
/ Y8 s2 g; a( n. T/ d當然,應用核對值的方法有一個死穴,就是頭一個字母如果錯入了一個和原本字母相隔 11 個位的字母,例如:將 “H856249(2)” 錯入成 “S856249(2)”(其核對值為 308,可以被 11 整除),那麼電腦亦無法知道到輸入的資料有錯了。不過,相信發生如此錯誤的機會極之小,所以這個方法亦相當可靠。 3 l/ x2 H0 J# S, O i7 Y 0 ~# {5 V" n# q5 t& Y" s z還有,如果輸入資料時出現 2 處或以上的錯誤,例如:將 “H856249(2)” 錯入成 “H856049(A)”,我們亦無法將錯誤檢查出來。(當然,如果太容易出現 2 處的輸入錯誤,那麼我認為最佳的解決辦法,就是辭退那位輸入員,改聘另一位更可靠的人選了!) . T3 h/ ^! l$ v6 u1 x3 \) A; D. g# o" `0 L4 O9 }
另一個秘密 ! I( o* w z6 I l% ]! ~/ X& w
留意在上面的討論中,那個位值倍數其實沒有多大的作用。事實上,如果我們不乘上任何倍數而直接將所有數位加起來,再定出一個核對數位,我們依然可以檢查出輸入資料時(1 處)的錯誤。那麼,我們為甚麼需要加入這個位值倍數呢?+ C& c+ Q6 l( P2 }" }+ a5 [% f
3 x' B( m6 T2 Q$ W# U原來這亦是用來防止一般人一個容易犯上的錯誤,這就是誤將其中的兩個數字的位置對調。例如:將 “H856249(2)” 錯誤地變成 “H856294(2)”。+ l* B5 V" s9 C1 b3 b# j
2 V" z; ]5 \ ?5 W1 t" R
我們再假設正確身份證號碼的核對值為 A,第 k 位的數字為 a,第 k + n 位的數字為 b(a ¹ b;n ³ 1),如果我們錯誤地將 a、b 兩個數字對調了,那麼該核對值便會變成 . x3 F7 e2 l8 {' H! K* ]8 K) P " I9 t& K& V0 j1 v- w$ V/ rA - a ´ k - b ´ (k + n) + a ´ (k + n) + b ´ k = A + (a - b) ´ n 7 b, P1 H6 b N0 W- ?
/ b* Z$ C; I' m$ w4 J; z. N
同理,a、b 和 n 都祇會是 0 至 9 之間的數字,故此 (a - b) ´ n 這個部分,以至是整個核對值,都不能被 11 所整除,由此可以知道輸入的資料有錯了。留意如果沒有這個位值倍數,我們就無法偵測出這種錯誤了。 7 z+ ?; u6 D, Y; W" } 3 `9 J! F; P x6 @; b總而言之,身份證號碼中的核對數位,是一個簡單但非常聰明的設計,它可以讓我們很容易地偵測出輸入資料時的兩種常犯的錯誤,從而確保資料的可靠性。在整個過程中,亦請大家細心欣賞 11 這個數字的功用。由於 11 是一個質數(而且剛好大於 10),任何兩個小於它的數字相乘,都不能被它所整除,所以才能夠在上述運算中,找到輸入時的錯誤。如果換了一個合成數,情況就不同了。例如:12,我們知道 4 和 6 都小於 12,但 4 ´ 6 的結果,卻能被 12 所整除,因此 12 不可以用來做核對過程中的除數。 / @. x+ I0 b7 o * @& a3 @! b$ y: C# V- v0 h* r3 }8 R最後,個人認為,既然核對數字已經成為身份證號碼中一個不可或缺的一部分,故此我們其實亦不必將它特別地指明,以一對括號將它括起來。更何況,將它括起來後,更會引起一些不知情的人胡亂猜測,實在無謂。故此,我提議政府在改發新的身份證明文件的同時,將這一對括號刪去。這不是更好的嗎?作者: mingP 時間: 2005-7-2 10:29 PM
malaysia 1 how???=.='''作者: 1986 時間: 2005-7-2 10:45 PM