
目前我国居民身份证号码总共是18位,前17位都有具体含义:前6位是首次办身份证时所在的省、市、区的代码,中间8位是持证人的出生年、月、日,后面3位是申请户籍时派出所的分配码。唯独最后一位数字,是对前面的数字进行简单的数学运算后得出的,它是一个校验码。有的人会问:“为什么我身份证号的最后一位是字母X?”其实,这并不是字母X,而是罗马数字Ⅹ。为什么不写成10呢?因为如果写成10,身份证号就变成19位了。在编码学中,不一样的数位不太容易存储和使用。那为什么最后一位的校验码会算出10呢?其实,这种算法已经有上千年的历史了。
来自丝绸之路的数学
首先,我们来看一种古老的算法:弃九法。
15世纪初,撒马尔罕城的统治者兀鲁伯格很爱钻研科学。他编订了《兀鲁伯格历》。这么喜欢科学的一个人,当然也很喜欢从帝国境内网罗各种数学、天文学人才。
阿尔·卡西是兀鲁伯格手下的首席科学家,也是兀鲁伯格天文台的第一任台长。当时的首席科学家不仅要帮助皇帝解决最困难的数学、天文学问题,还要给帝国境内的工匠、官员,还有儿童、青少年编订数学书。他编的这本书的名字叫《算术之钥》,就是算术的钥匙的意思。这本书囊括了跟今天小学和初中数学类似的内容:算术、代数、几何,书的第一卷讲的是整数的运算,比如加法、减法、乘法、除法,其中有一个算法很有意思,叫弃九法。
要了解弃九法,首先要弄清楚什么叫弃九数。比如,数字3217,把它每一位上的数字连续相加,3加2加1加7等于13;继续把13的每一位上的数字相加,1加3等于4。直到得到个位数字4为止,这个4就是3217的弃九数。其实这个弃九数就是3217除以9之后的余数,只不过这种连续相加的方法是一种快速算法。
弃九数有什么用?它最主要的作用是检验运算是否准确。比如,现在要检查3169乘以732等于2319708是否正确。如果没有别的方法的话,只能把它重新算一遍。但是用弃九法,首先把3169的弃九数求出来——1,再算出732的弃九数——3,接着算出2319708的弃九数——3,最后我们核验一下1乘以3等于3,结果是正确的。




