1. 程式人生 > >逆元 + 費馬定理 + 尤拉定理

逆元 + 費馬定理 + 尤拉定理

一,逆元:

先讓我們考慮如何求解線性同餘方程 :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