1. 定义
1.1 逆元
在群
G
中,
∀a∈G,∃a′∈G, s.t.aa′=e
,其中
e
为
G
的单位元
1.2 乘法逆元
p
为素数,记
a⋅b=a×bmodp
在群
N
中,
∀a∈N,∃a′∈N, s.t.aa′=e=1
则称
a′
是
a
关于
modp的逆元
,记为
inv[a]
2. 逆元的性质
2.1 存在唯一性
对于
a∈N
,有且仅有一个
a′
,
s.t.aa′≡1modp
2.2 完全乘性函数
∀a,b∈N,inv[a]×inv[b]≡inv[a×b]modp
2.3 性质3
inv[k]≡−(p/k)×inv[pmodk](modp)
2.4 性质4
a/b=a×inv[b]modp
3.求乘法逆元
3.1 暴力枚举
从
1
到
p−1
枚举
a′
的值,转为判断性问题,判断
aa′modp
是否为1
3.2 费马小定理
假定
p
是素数,且
gcd(a,p)=1
,那么
ap−1≡1modp
那么对于乘法逆元
a×ap−2≡1modp
所以
inv[a]≡ap−2modp
,可以使用快速幂来求逆元
3.3 扩展欧几里得算法
对于
aa′≡1
,我们可以构建方程
ax+py=1
同时令
a′=x
,那么就将问题转化为求
x,y
了。
对于
a,p
的最大公约数,并且求解
x,y
假设当前的状态为
(a,b)
1. 当
b=0
时,
gcd(a,b)=a
,所以
x=1,y=0
2. 当
b≠0
时,我们先执行
gcd(b,amodb)
现在
xb+y(amodb)=1→x×b+y×a−(a/b)y×b=1→ya+[x−(a/b)y]b=1
那么我们构造出的
x′,y′
作为新的
x,y
满足
ax+by=1
即
x′=y,y′=x−(a/b)y
,求出
x
3.4 欧拉定理
aφ(p)≡1modp
,则
aφ(p)−1
是
a
的逆元
其中
φ(p)
是小于
p
并且与
p
互质的个数
3.5 递推
已知
inv[1]=1
假设已经求出
inv[i],∀i<k
,求
inv[k]
设
p=ak+b,0≤b<k
b×inv[b]=(p−ak)×inv[b]=−ak×inv[b]=k×(−a×inv[b])=1modp
则
inv[k]=−a×inv[b]=−(p−/k)×inv[pmodk]modp