费马小定理

定理

若 \(p\) 是质数,且整数 \(a\) 满足 \(\boldsymbol{a \not\equiv 0 \pmod p}\),则:

\[a^{p-1} \equiv 1 \pmod p \]

变形

  1. \(a^{p-2} \equiv a^{-1} \pmod p\)

  2. \(a^b \equiv a^{b \bmod (p-1)} \pmod p\)

前提:p为质数

运用

乘法逆元

在模质数 \(p\) 意义下,除法不能直接算,要乘逆元:

\[\frac{x}{y} \pmod p = x \times y^{-1} \pmod p \]

由费马:\(y^{-1}=y^{p-2}\pmod p\),用快速幂计算。

适用场景:组合数 \(\mathrm{C}_n^k \bmod p\),p为质数。

快速幂降幂

求 \(a^b \bmod p\),当 \(b\) 极大,p质数,a、p互质:

\[a^b \equiv a^{b \bmod (p-1)} \pmod p \]

素数测试

随机选若干个a,检验 \(a^{p-1}\equiv1\pmod p\)

满足大概率(存在伪素数)是质数,不满足一定是合数。


模版

typedef long long ll;
ll qpow(ll a,ll b,ll mod){
    ll res=1;
    while(b){
        if(b&1) res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return res;
}
// 求a在模质数p下逆元
ll inv(ll a,ll p){
    return qpow(a,p-2,p);
}

例题

P2613

题目:给出 \(a,b,p\),求 \(\dfrac{a}{b} \bmod 19260817\),\(19260817\)是质数。

式子:

\[\frac{a}{b} \equiv a \times b^{mod-2} \pmod{mod} \]

片段:

const int mod=19260817;
ll a,b;
cin>>a>>b;
ll ans=a%mod * qpow(b,mod-2,mod)%mod;

P3811

单点求逆元用费马快速幂

但本题n范围大 \(1\le n\le 3\times10^6\),费马快速幂会TLE,要用线性递推逆元。

posted @ 2026-10-03 10:42  axiom  阅读(38)  评论(0)    收藏  举报
/* 设置动态特效 */