住民票をもった国民一人一人に割り当てられるマイナンバー(個人番号)
12桁の数字で構成されるのですが、この下一桁がチェックデジット(いわゆる検査用数字)になっているのはご存知でしょうか?
つまり、左から11桁と公式によって割り出される検査数字1桁を加えた12桁の数字で構成されているんです♪
総務省令第八十五号『検査用数字を算出する算式』
第五条 令第八条の総務省令で定める算式は、次に掲げる算式とする。
算式
11―(n=1(シグマ)11(Pn×Qn))を11で除した余り)
ただし、(n=1(シグマ)11(Pn×Qn))を11で除した余り≦1の場合は、0とする。
算式の符号
Pn 個人番号を構成する検査用数字以外の十一桁の番号の最下位の桁を1桁目としたときのn桁目の数字
Qn 1≦n≦6のとき n+1 7≦n≦11のとき n―5
n=1からn=11までのPn,Qn,Pn×Qnを計算します。
P1 = 12345678901の一番右の「1」
Q1 = nが1以上6以下だからn+1=1+1=2となって,「2」
P1×Q1=1×2=2
P2 = 12345678901の右から2つ目の「0」
Q2 = nが1以上6以下だからn+1=2+1=3となって,「3」
P2×Q2=0×3=0
P3 = 12345678901の右から3つ目の「9」
Q3 = nが1以上6以下だからn+1=3+1=4となって,「4」
P3×Q3=9×4=36
P4 = 12345678901の右から4つ目の「8」
Q4 = nが1以上6以下だからn+1=4+1=5となって,「5」
P4×Q4=8×5=40
P5 = 12345678901の右から5つ目の「7」
Q5 = nが1以上6以下だからn+1=5+1=6となって,「6」
P5×Q5=7×6=42
P6 = 12345678901の右から6つ目の「6」
Q6 = nが1以上6以下だからn+1=6+1=7となって,「7」
P6×Q6=6×7=42
P7 = 12345678901の右から7つ目の「5」
Q7 = nが7以上11以下だからn-5=7-5=2となって,「2」
P7×Q7=5×2=10
P8 = 12345678901の右から8つ目の「4」
Q8 = nが7以上11以下だからn-5=8-5=3となって,「3」
P8×Q8=4×3=12
P9 = 12345678901の右から9つ目の「3」
Q9 = nが7以上11以下だからn-5=9-5=4となって,「4」
P9×Q9=3×4=12
P10 = 12345678901の右から10桁目の「2」
Q10 = nが7以上11以下だからn-5=10-5=5となって,「5」
P10×Q10=2×5=10
P11 = 12345678901の右から11桁目の「1」
Q11 = nが7以上11以下だからn-5=11-5=6となって,「6」
P11×Q11=1×6=6
P1×Q1からP11×Q11までの和を計算。
2+0+36+40+42+42+10+12+12+10+6=212
11で割ったあまりを求めます。
212÷11=19あまり3
11-3=8
(この時、余りの数字が1以下の場合はすべて「0」となります)
1234567890と8で、12345678908がマイナンバーとなります。
マイナンバーの検査数字を算出してみましょう〜!
check_digit関数を作成して引数にマイナンバー11桁を入れます。
function check_digit(mynumber) { var sum, n, p, q, mo, rel; if(!mynumber.match(/^[0-9]{11}$/)) { return; } sum = 0; for(n = 1; n <= 11; n++) { p = mynumber.substr(11 - n, 1); q = n >= 1 && n <= 6 ? n + 1 : n - 5; sum += p * q; } mo = sum % 11; rel = mo <= 1 ? 0 : 11 - mo; return rel; }
function check_digit(mynumber As String) As Integer Dim sum As Integer Dim n As Integer Dim p As Integer Dim q As Integer Dim mo As Integer Dim rel As Integer If is_numeric(mynumber) = False Then Exit Function If Len(mynumber)<>11 Then Exit Function For n = 1 to 11 p = Left(Right(mynumber, n), 1) q = IIf(n >= 1 And n <= 6, n + 1, n - 5) sum = sum + (p * q) Next mo = sum mod 11 rel = IIf(mo <= 1, 0, 11 - mo) Return rel End Function
内閣官房:マイナンバーサイト
http://www.cas.go.jp/jp/seisaku/bangoseido/
行政手続における特定の個人を識別するための番号の利用等に関する法律の規定による通知カード
及び個人番号カード並びに情報提供ネットワークシステムによる特定個人情報の提供等に関する省令
(平成26年内閣府・総務省令第85号)(PDF:201KB)
http://www.cas.go.jp/jp/seisaku/bangoseido/seirei/pdf/26-85.pdf