乘法逆元是一个比较困难的话题,许多老师都讲过,但是目前没有老师能清晰地讲解。所以我就在这里整合每个老师讲的内容、一些其它的资料和我自己的理解,写下了这一篇学习笔记。
逆元是什么
若
a
a
a、
x
x
x、
p
p
p 均为正整数,且
a
a
a 与
p
p
p 互质,并满足
a
x
≡
1
(
m
o
d
p
)
(1)
ax \equiv 1 \pmod p \tag{1}
ax≡1(modp)(1)即在模
p
p
p 意义下
x
x
x 是
a
a
a 的倒数,则此时
x
x
x 为
a
a
a 的乘法逆元,即在模
p
p
p 意义下一个数除以某个除数等于乘这个除数的乘法逆元。
如何求逆元
通过公式 ( 1 ) (1) (1),可以推导出存在正数 y y y,使得 a x + p y = 1 (2) ax+py=1\tag{2} ax+py=1(2)此时该式为一个二元一次方程,可以使用扩展欧几里得解,解完后 x x x 的值即为 a a a 的逆元。
扩展欧几里得
扩展欧几里得是一种可以解不定方程
a
x
+
b
y
=
gcd
(
a
,
b
)
(3)
ax+by=\gcd(a,b)\tag{3}
ax+by=gcd(a,b)(3)的一种算法,它通过将上述方程转化为
b
x
′
+
(
a
m
o
d
b
)
y
′
=
gcd
(
b
,
a
m
o
d
b
)
(4)
bx'+(a\bmod b)y'=\gcd(b,a\bmod b)\tag{4}
bx′+(amodb)y′=gcd(b,amodb)(4)而这个方程又可以继续用该方法转化,直至转化为
b
=
0
b=0
b=0 时方程的解即为
x
=
1
,
y
∈
R
x=1,y\in\mathbb{R}
x=1,y∈R,此处取
y
=
0
y=0
y=0,解完这个方程后就得将这个方程的解推导到上一个方程,由公式
(
4
)
(4)
(4)转化即可得出
b
x
′
+
(
a
−
b
⌊
a
b
⌋
)
y
′
=
gcd
(
b
,
a
m
o
d
b
)
(5)
bx'+(a-b\lfloor \frac{a}{b} \rfloor)y'=\gcd(b,a \bmod b)\tag{5}
bx′+(a−b⌊ba⌋)y′=gcd(b,amodb)(5)
又由公式
(
4
)
(4)
(4)和
(
5
)
(5)
(5)得
a
y
′
+
b
(
x
′
+
⌊
a
b
⌋
y
′
)
=
a
x
+
b
y
(6)
ay'+b(x'+\lfloor \frac{a}{b} \rfloor y')=ax+by\tag{6}
ay′+b(x′+⌊ba⌋y′)=ax+by(6)故原不定方程的一组解为
x
=
y
′
,
y
=
x
′
+
⌊
a
b
⌋
y
′
(7)
x=y',y=x'+\lfloor \dfrac{a}{b} \rfloor y'\tag{7}
x=y′,y=x′+⌊ba⌋y′(7)
通过这种方法将转化后的方程的解推导到原方程的解,一层一层地往上推,即可得出原方程的一组解。
逆元的其它性质和相关定理
-
(费马小定理)若 p p p 是质数,且 a a a 不是 p p p 的倍数,则 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv 1 \pmod p ap−1≡1(modp)。
证明:参见百度百科 -
(费马小定理推论)若 p p p 是质数,且 a a a 不是 p p p 的倍数,则 a p − 2 a^{p-2} ap−2 为模 p p p 意义下 a a a 的逆元。
证明:由费马小定理得 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv 1 \pmod p ap−1≡1(modp)即可推出 a p − 2 ≡ a − 1 ( m o d p ) a^{p-2}\equiv a^{-1} \pmod p ap−2≡a−1(modp)由此可以得出 a p − 2 a^{p-2} ap−2 为模 p p p 意义下 a a a 的逆元。 -
(若 p p p 是质数,如何求 i ! ( 1 ≤ i ≤ n ) i!(1\leq i\leq n) i!(1≤i≤n) 在模 p p p 意义下的的逆元)先求出 f ( i ) = i ! m o d p f(i)=i!\bmod p f(i)=i!modp然后通过费马小定理推论得 f ( n ) − 1 = f ( n ) p − 2 f(n)^{-1}=f(n)^{p-2} f(n)−1=f(n)p−2继续向下推导得 f ( i − 1 ) − 1 = [ f ( i ) i ] − 1 = f ( i ) − 1 i − 1 = i f ( i ) − 1 f(i-1)^{-1}=\left[\frac{f(i)}{i}\right]^{-1}=\frac{f(i)^{-1}}{i^{-1}}=if(i)^{-1} f(i−1)−1=[if(i)]−1=i−1f(i)−1=if(i)−1然后即可得出所有阶乘的逆元。