費馬小定理:假如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...