就当为CSDN这方面的python开源做点贡献哈哈哈
Eulid扩展算法(求乘法逆元)
- 算法原理
(ps:原理需要理解,建议可以尝试着手写推演一遍。这里的原理写的比较简洁,如果没看懂,可以看看其他大佬写的原理。)
- python代码
#扩展Eulid算法(求乘法逆元)
def ExtendedEulid(a:int,b:int):#ax=1modb,得到b在模a下的乘法逆元
def ExtendedEulid0(a:int,b:int):
if b==0:#边界条件
return 1,0,a
else:
x,y,gcd=ExtendedEulid0(b,a%b)#递归
x,y=y,(x-(a//b)*y)#递推关系,左端为上层
return x,y,gcd#返回第一层的计算结果。
#最终返回的y值即为b在模a下的乘法逆元
#若y为复数,则y+a为相应的正数逆元
n=ExtendedEulid0(a,b)
if n[1]<0:
return n[1]+a
else:
return n[1]
- 实现过程