好的,在这里我给出一个求模逆的 Python 代码,该代码使用了扩展欧几里得算法(Extended Euclidean Algorithm)来计算模逆。
def modinv(a, m):
# 求 a 在模 m 意义下的逆元
# 返回一个元组 (d, x, y),使得 d = gcd(a, m) = ax + my
d, x, y = extended_gcd(a, m)
if d != 1:
# a 和 m 互质,无逆元
return None
else:
# a 在模 m 意义下的逆元为 x
return x % m
def extended_gcd(a, b):
# 求 a 和 b 的 gcd,并返回一个元组 (d, x, y),使得 d = gcd(a, b) = ax + by
if a == 0:
return b, 0, 1
else:
d, x, y = extended_gcd(b % a, a)
return d, y - (b // a) * x, x