乘法逆元

一、相關定理介紹
1.乘法逆元
如果ax≡1 (mod p),且gcd(a,p)=1(a與p互質),則稱a關於模p的乘法逆元爲x。下文中,x都表示乘法逆元。
2.費馬小定理
假如a是一個整數,p是一個質數,那麼是p的倍數,可以表示爲


或者寫作:

3.擴展歐幾里得定理
已知整數a、b,擴展歐幾里得算法可以在求得a、b的最大公約數的同時,能找到整數x、y(其中一個很可能是負數),使它們滿足貝祖等式。

二、乘法逆元的求法
1.費馬小定理
由費馬小定理 ap-1≡1 , 變形得 a*ap-2≡1(mod p),答案已經很明顯了:若a,p互質,因爲a*ap-2≡1(mod p)且a*x≡1(mod p),則x=ap-2(mod p),用快速冪可快速求之.
2.擴展歐幾里得
我們都知道模就是餘數,比如12%5=12-5*2=2,18%4=18-4*4=2。(/是程序運算中的除)

那麼ax≡1 (mod p)即ax-yp=1.把y寫成+的形式就是ax+py=1,爲方便理解下面我們把p寫成b就是ax+by=1。就表示x是a的模b乘法逆元,y是b的模a乘法逆元。然後就可以用擴展歐幾里得求了。


三、乘法逆元與除法取模
求a/b=x(mod M)

只要M是一個素數,而且b不是M的倍數,就可以用一個逆元整數b1,通過 a/b=a*b1 (mod M),只能來以乘換除。
費馬小定理:對於素數 M 任意不是 M 的倍數的 b,都有:b ^ (M-1) = 1 (mod M)
於是可以拆成:b*b^(M-2)=1(mod M)
於是:a/b=a/b*(b * b ^ (M-2))=a*(b ^ (M-2)) (mod M)

求a/b=x(mod M)

用擴展歐幾里德算法算出b1,然後計算a*b1(mod M)

exgcd(b,M,x,y);   b1=x;

 

當p是個質數的時候有
inv(a) = (p - p / a) * inv(p % a) % p

 

證明:

設x = p % a,y = p / a
於是有 x + y * a = p
(x + y * a) % p = 0
移項得 x % p = (-y) * a % p
x * inv(a) % p = (-y) % p
inv(a) = (p - y) * inv(x) % p
於是 inv(a) = (p - p / a) * inv(p % a) % p

然後一直遞歸到1爲止,因爲1的逆元就是1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章