使用費馬小定理求解逆元

2021-10-09 07:15:59 字數 1245 閱讀 8333

費馬小定理:假如a是乙個整數,p是乙個質數,那麼

如果b是p的倍數,bp≡

b(mo

dp

)b^p \equiv b(mod p)

bp≡b(m

odp)

如果b不是p的倍數,bp−

1≡1(

modp

)b^ \equiv 1(mod p)

bp−1≡1

(mod

p)

同余式:a≡b

(mod

p)

a \equiv b(mod p)

a≡b(mo

dp)表示a和b對模p同餘,即 正整數a - b能被p整除,(a−

b)%p

=0

(a - b) \% p = 0

(a−b)%

p=0

證明:略

使用費馬小定理求解乘法逆元時,要求p為質數,且b不能為p的倍數,所以使用費馬小定理的第二條:如果b不是p的倍數,bp−

1≡1(

modp

)b^ \equiv 1(mod p)

bp−1≡1

(mod

p),所以b∗b

p−2≡

1(mo

dp

)b * b^ \equiv 1(mod p)

b∗bp−2

≡1(m

odp)

,b p−

2b^

bp−2

是b的逆元。那麼使用快速冪求出bp−

2b^

bp−2

即求出在 (mod p) 的意義下,b 的乘法逆元

#include

typedef

long

long ill;

const

int p =

99991

;//快速冪

ill binarypow

(ill base, ill expo, ill p)

}//在(mod p)的意義下,b的乘法逆元

ill inv

(ill b)

intmain()

輸入119,求出結果為19326,所以當求(1 / 119) % 99991時,可以轉化為(1 * 19326) % 99991

費馬小定理求逆元

求餘的概念 a b p a p b p p a b p a p b p p a b p a p b p p 為什麼要求逆元 對於一些題目,我們必須在中間過程中進行求餘,否則數字太大,電腦存不下,那如果這個算式中出現除法,我們是不是對這個算式就無法計算了呢?這時候就用到了逆元。費馬曾經說過 費馬小定理...

乘法逆元 費馬小定理

我實在是太.才明白這個qwq 一 前置知識 定義1 給定正整數m,若用m除兩個整數a和b所得的餘數相同,稱a和b對模m同餘,記作a b mod m 並稱該式子為同余式 否則稱a和b對模m不同餘 二 乘法逆元 若整數b,p互質,並且b a,則存在乙個整數x,使得 a b a x mod p 稱x為b的...

乘法逆元與費馬小定理

乘法逆元 我們知道 a b m a 1 b m 令1 b 等於 h 那麼 h就是b關於m的乘法逆元,其實就是關於m的乙個相反數,b h 1 m 那麼我們如何求乘法逆元呢 擴充套件歐幾里得演算法b h 1 m 可以等價於b x m y 1 那麼我們主需要呼叫歐幾里得演算法求解出來就可以了。int ca...