逆元 + 費馬定理 + 尤拉定理
一,逆元:
先讓我們考慮如何求解線性同餘方程 :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