费马小定理
费马小定理(Fermat’s little theorem)是数论中的一个重要定理,在1636年提出。如果p是一个质数,而整数a不是p的倍数,则有 a p − 1 ≡ 1 ( m o d ) p a^{p-1}≡1(mod )p ap−1≡1(mod)p
根据乘法逆元的定义是:
a
x
≡
1
(
m
o
d
)
p
ax≡1(mod )p
ax≡1(mod)p解x称为a关于模n的乘法逆元
将上面的公式转化一下:
a
p
−
1
≡
1
(
m
o
d
)
p
a^{p-1}≡1(mod )p
ap−1≡1(mod)p
=
>
=>
=>
a
∗
a
p
−
2
≡
1
(
m
o
d
)
p
a*a^{p-2}≡1(mod )p
a∗ap−2≡1(mod)p
发现此时的
a
p
−
2
a^{p-2}
ap−2就是上面的
x
x
x,
x
=
a
p
−
2
x=a^{p-2}
x=ap−2也就是说
a
p
−
2
a^{p-2}
ap−2%p,就可以求出乘法逆元,当然需要快速幂去求此逆元
ll fpm(ll x, ll power, ll mod) {
x %= mod;
ll ans = 1;
for (; power; power >>= 1, (x *= x) %= mod)
if(power & 1) (ans *= x) %= mod;
return ans;
}
int main() {
ll x = fpm(a, p - 2, p); //x为a在mod p意义下的逆元
}