端くれプログラマの備忘録 アルゴリズム [アルゴリズム] 6桁の数字のチェックデジットを計算する

[アルゴリズム] 6桁の数字のチェックデジットを計算する

6桁の数字に対してチェックデジットを計算するには、いくつかの方法がありますが、代表的なものに「モジュラス10」方式があります。これは、数字の加算とある種のアルゴリズムに基づいてチェックデジットを生成する方法です。具体的には「Luhnアルゴリズム」と呼ばれるものが一般的です。

ここでは、Luhnアルゴリズムを使った6桁の数字に対するチェックデジットの計算方法を説明します。

手順:

  1. 6桁の数字を一桁ずつリストにします(例:123456)。
  2. 右から奇数番目の桁に2を掛けます。
  3. 2を掛けた結果が2桁になった場合、各桁の合計を取ります(例:14なら1 + 4 = 5)。
  4. すべての桁を合計します。
  5. 合計が10で割り切れる場合、チェックデジットは0。それ以外の場合、チェックデジットは次の10の倍数までの差です。

例:

数字が 123456 の場合、Luhnアルゴリズムを適用します。

  1. 6桁の数字をリスト化します:[1, 2, 3, 4, 5, 6]
  2. 右から奇数番目の数字に2を掛けます:
    • 6 -> 6
    • 5 -> 5×2 = 10 (→ 1 + 0 = 1)
    • 4 -> 4
    • 3 -> 3×2 = 6
    • 2 -> 2
    • 1 -> 1×2 = 2
  3. 変換後のリスト:[2, 2, 6, 4, 1, 6]
  4. これらの数字をすべて足し合わせます:2 + 2 + 6 + 4 + 1 + 6 = 21
  5. 21を次の10の倍数にするには、差は9なので、チェックデジットは 9 です。

この方法は一般的なLuhnアルゴリズムの計算方法ですが、業界やシステムによって別のアルゴリズムが使われることもあります。どの方法を使うかは要件によって異なります。