一些标准Python模块是否包含一个函数来计算一个数的模乘逆,即一个数y=invmod(x,p),从而x*y==1(mod p)?谷歌似乎没有就此给出任何好的暗示
当然,你可以想出自制的10行扩展欧几里德算法,但为什么要重新发明轮子呢
例如,Java的biginger具有modInverse方法。Python没有类似的东西吗
Python 3.8+
y=pow(x,-1,p)
Python3.7及更早版本
也许有人会发现这很有用(来自维基):
定义egcd(a、b):
如果a==0:
返回(b,0,1)
其他:
g、 y,x=egcd(b%a,a)
返回(g,x-(b//a)*y,y)
def modinv(a,m):
g、 x,y=egcd(a,m)
如果g!=1:
引发异常('模逆不存在')
其他:
返回x%m