擴展歐幾里得算法求模的乘法逆元


我們首先了解一下歐幾里得算法

 

 

這個我們在小學應該就接觸過 利用輾轉相除法求最大公約數

用python代碼表示一下:

 

def gcd(a,b):
    if a < b:
        a,b = b,a
    while b!=0:
        a ,b= b,a%b
    return a

 

接着我們要了解加法逆元與乘法逆元

 

 加法逆元就是:

 

 乘法逆元:

 

接下來再是利用擴展歐幾里得算法求乘法逆元

 

 

 這里求的 是整數d關於m(要取余的那個)的乘法逆元

我們用python表示下

def findModReverse(a, m) :

    if gcd(a, m) != 1:

      return None #這樣肯定沒答案 自己體會

    ul,u2, u3 =1,0, a

    v1, v2, v3 =0, 1,m

    while v3!=0:

        q=u3//v3

        vl, v2, v3, ul, u2, u3 = (u1-q*v1), (u2-q*v2), (u3-q*v3), vl, v2,v3
    return u1%m #這個才是輸出

 這些算法是密碼學等應用比較廣泛的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM