ITPub博客

首页 > > > 10716 身份证会有连号吗?

10716 身份证会有连号吗?

作者:格伯纳 时间:2017-08-29 05:30:25 0 删除 编辑

  今天刷到一个有意思的问题:双胞胎的身份证为什么不是连号的?我们知道,身份证号码的最后一位是校验位,因为它的存在,身份证出现连号的几率是很小的。但到底有没有这种可能呢?

  首先,要定义一下什么叫「连号」。最简单的定义方法,就是把身份证号看成一个 18 位数,如果两个数相差 1,就叫「连号」。身份证号的末位可能出现 X,这种号码就先忽略了。

  因为校验位是由前 17 位完全决定的,所以不会出现前 17 位都相同,只有最后一位相差 1 的情况。「连号」的身份证,必须在前 17 位中也有不同。

  身份证号的结构为:6 位地区 + 8 位生日 + 3 位顺序号 + 1 位校验位。这样,要找「连号」的身份证,就应该让顺序号相差 1,同时校验位分别为 9 和 0。例如,两个身份证号分别以 0059 和 0060 结尾。这样的身份证号是否存在呢?这就需要弄懂校验位是怎么算出来的。

  校验位的算法如下:

  1. 把第 1 到 17 位分别乘以 2^{17}, 2^{16}, \ldots, 2^1 ,并相加;
  2. 把上一步的结果除以 11,取余数;
  3. 用 12 减去这个余数,并再次对 11 取余。

以题图中「奥巴马的身份证」为例:

\begin{array}{cc} & 3 & & 2 & & 6 & & 2 & & 2 & & 1 & & 1 & & 9 & & 6 & & 1 & & 0 & & 8 & & 0 & & 4 & & 0 & & 0 & & 9 & &\\ \times & 2^{17} & & 2^{16} & & 2^{15} & & 2^{14} & & 2^{13} & & 2^{12} & & 2^{11} & & 2^{10} & & 2^9 & & 2^8 & & 2^7 & & 2^6 & & 2^5 & & 2^4 & & 2^3 & & 2^2 & & 2^1 & &\\ \hline & 393216 & + & 131072 & + & 196608 & + & 32768 & + & 16384 & + & 4096 & + & 2048 & + & 9216 & + & 3072 & + & 256 & + & 0 & + & 512 & + & 0 & + & 64 & + & 0 & + & 0 & + & 18 & = & 789330 \end{array}

789330 除以 11 余 3,12 减 3 得 9,对 11 取余还是 9。你看,果然是伪造的身份证,校验位都不对呢!

  回到「连号」的问题。我们发现关键在于:当顺序号差 1 的时候,对校验位有什么影响呢?校验位算法的关键,在于第一步中各位乘的系数。顺序号的三位,乘的系数分别为 8, 4, 2。另外还要注意第三步中做了一次减法,所以当顺序号的三位分别增加 1 的时候,校验位会分别减去 8, 4, 2 —— 当然,如果结果小于 0 了,要加上 11。

  要找「连号」的身份证号,就要让校验位由 9 变成 0,即校验位减 9。如果顺序号只是个位加 1,那么校验位会减 2,满足不了要求。所以上文中说的以 0059 和 0060 结尾这样的连号是不存在的。那么,像 0599 和 0600 这样,顺序号十位发生变化的连号是否存在呢?注意在顺序号十位加 1 的同时,个位减了 9。这二者分别导致校验位减 4 和加 18,净效果相当于加 3 或者减 8,也不行。那如果像 5999 和 6000 这样,顺序号百位进位呢?此时,顺序号百位加 1,十位和个位都减 9,对校验位的影响分别是减 8、加 36、加 18 —— 净效果正是减 9!

  于是,要找「连号」的身份证号,就应当去找末三位(顺序号的后两位和校验位)都是 9 的号码,然后把它加 1。可以验证,如果把奥巴马的身份证号的顺序号改成 199,那么校验位就是 9 了。这样,我们就找到了一对「连号」的身份证号:326221196108041999 和 326221196108042000。

  如果你的身份证号是以 999 或 000 结尾的,那么就很可能有一个人的身份证号跟你「连号」哦!这个人可能是你的亲兄弟或亲姐妹,也可能是与你同一天出生在同一个地区的一名异性。请珍惜这种缘份 ^_^

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    983868