Pythonでのモジュラ逆数の計算方法


  1. 拡張ユークリッドの互除法を使用する方法: 拡張ユークリッドの互除法は、2つの整数の最大公約数と、それらの整数に関連する係数を見つける手法です。以下は、この方法を使用してモジュラ逆数を計算するPythonのコード例です。
def extended_gcd(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        gcd, x, y = extended_gcd(b % a, a)
        return (gcd, y - (b // a) * x, x)
def mod_inverse(a, m):
    gcd, x, _ = extended_gcd(a, m)
    if gcd != 1:
        raise ValueError("Inverse does not exist.")
    else:
        return x % m
# テスト
a = 7
m = 26
mod_inv = mod_inverse(a, m)
print(f"The modular inverse of {a} (mod {m}) is: {mod_inv}")
  1. pow()関数を使用する方法: Pythonのpow()関数は、指定された基数と指数に基づいてべき乗を計算します。これを使用してモジュラ逆数を計算することもできます。以下は、この方法を使用してモジュラ逆数を計算するPythonのコード例です。
def mod_inverse(a, m):
    mod_inv = pow(a, -1, m)
    if mod_inv == 0:
        raise ValueError("Inverse does not exist.")
    else:
        return mod_inv
# テスト
a = 7
m = 26
mod_inv = mod_inverse(a, m)
print(f"The modular inverse of {a} (mod {m}) is: {mod_inv}")

これらは、Pythonでモジュラ逆数を計算するための一般的な方法のいくつかです。他にもさまざまな手法が存在しますが、上記の方法を参考にしてください。