python实现扩展的欧几里德算法

扩展的欧几里德算法可用于求解a mod b的逆元,而逆元求解在RSA加密算法中是不可缺少的一步

算法本身并不复杂,根据伪代码就很容易能用python实现

伪代码如下:

python实现扩展的欧几里德算法_第1张图片

python实现如下(递归求解):

A=[0,1]
N=[1,0]
A.append(int(input('Please input a:')))
N.append(int(input('Please input n:')))
def Extended_Euclid(a,n):
    if a[2]==0:
        print('无逆元,gcd(%d,%d)= %d'%(a[2],n[2]))
    elif a[2]==1:
        print('gcd(a,n)=%d\na的逆元: %d'%(a[2],a[1]))
    else:
        Q=n[2]//a[2]
        t1,t2,t3=[(n[0]-Q*a[0]),(n[1]-Q*a[1]),(n[2]-Q*a[2])]
        Extended_Euclid([t1,t2,t3],[a[0],a[1],a[2]])

solution=Extended_Euclid(A,N)

 

你可能感兴趣的:(Python)