一,逆元:
先讓我們考慮如何求解線性同餘方程 :a * x ≡ b ( mod m ) (1)(x爲一個變量)。
對於方程:a * x = b ,由於a存在倒數1/a ( a * y = 1,y爲a的倒數) 所以我們可以很容
易求解出該方程。如果 在(1)模運算中也存在類似於倒數的數y,這樣我們就能很快
的求解出(1)方程。 x = b * y; 在這裏我們稱y爲a 的逆元,
1,定義: 滿足 a * y ≡ 1 ( mod m ) 方程的y稱爲a的逆元()。
二,求逆元的方法:
1,歐幾里得擴展;
a * y ≡ 1 ( mod m ) 等價於 :a * y = 1 + m * k
a * y = 1 + m * k 等價於 :a * y – m * k = 1 該式子 可以用
歐幾里得擴展 來求但是 必須要滿足: gcd(a,m)=1;
即 :a,m互素;
三:費馬小定理:
這時我們可以得到a的一個逆元:
四,歐拉定理:
在數論中,歐拉定理,(也稱費馬-歐拉定理)是一個關於同餘的性質。歐拉定理表明,
若n,a爲正整數,且n,a互質,則
當n爲素數時 n的歐拉函數值爲n-1 就費馬定理 所以費馬定理是歐拉定理的特例。
四,逆元應用:乘法逆元(除法取模) 即:要求(a / b) mod p的值
當a/b無法保存時而p 比較小。這時我們用逆元發求解;
令:b * k ≡ 1 ( mod p ) 則 K 爲 b 的逆元;
則有(a/b)% p = (a * k )% p = (a%p + k%p)%p ;
證:
因爲 b * k ≡ 1 (mod p)
則有 b * k = p* x+1
得到 k = (p * x + 1) / b
將 k 代入(a * k) %p
得到:
(a * (p * x + 1) / b)% p
=((a * p * x) / b + a / b) %p
=[((a * p * x) / b) %p +(a / b)] %p
=[(p * (a * x) / b) %p +(a / b)] %p
=(0 + (a / b)) %p
= (a/b) %p