費馬小定理求逆元


費馬小定理求逆元

費馬小定理定義及證明

image-20201016085335031
  • 為什么每一個\(A_i \times a (mod p)\) 是獨一無二的?

對於任意兩個\(A_i \times a\)而言, 二者的差值為a的整數倍,而\((a,p)=1\),因此\((A_i,a) \% p\) 一定不會得到相同的余數(同余的兩個數的差值一定是mod的整數倍)。

  • \(\forall A_i \times a \% p (i=1,2,...,p-1)\) 所構成的序列是\((1,2,...,p-1)\)的一種排列

因為 \(x \% p \in [0,p-1]\),而已知\(A_i \times a (mod p)\) 是獨一無二的,因此\(\forall A_i \times a \% p (i=1,2,...,p-1)\) 所構成的序列是\((1,2,...,p-1)\)的一種排列。

  • 故得證 $\prod_{i=1}^{n} A_i = \prod_{i=1}^n (A_i \times a)(mod \ \ p) $

因此\((a,p) = 1\)\(a^{p-1} = 1 (mod \ \ p)\) \(p為素數,gcd(a,p) = 1\)

費馬小定理求逆元

\(a \times b = 1 (mod \ \ p)\)\(a,b\)互為 \(mod \ \ p\)逆元

由費馬小定理\(a^{p-1} = 1 (mod \ \ p)\),因此\(a \times a^{p-2} = 1 (mod p)\),因此a的逆元為\(a^{p-2} (mod \ \ p)\)

typedef long long ll;
ll mod = 1e9 + 7;
inline ll quick_pow(ll base,ll idx){
    ll ans = 1;
    while(idx){
        if(idx & 1){
            ans *= base;
            ans %= mod;
        }
        base *= base;
        base %= mod;
        idx >>= 1;
    }
    return ans;
}

inline ll inv(ll a){
    return quick_pow(a,mod-2);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM