Does some standard Python module contain a function to compute modular multiplicative inverse of a number, i.e. a number
y = invmod(x, p) such that
x*y == 1 (mod p)? Google doesn't seem to give any good hints on this.
Of course, one can come up with home-brewed 10-liner of extended Euclidean algorithm, but why reinvent the wheel.
For example, Java's
modInverse method. Doesn't Python have something similar?
Maybe someone will find this useful (from wikibooks):
def egcd(a, b): if a == 0: return (b, 0, 1) else: g, y, x = egcd(b % a, a) return (g, x - (b // a) * y, y) def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('modular inverse does not exist') else: return x % m