数学——数论_乘法逆元

1. 定义

1.1 逆元

在群 G G 中, aG,aG, s.t.aa=e ∀ a ∈ G , ∃ a ′ ∈ G ,   s . t . a a ′ = e ,其中 e e G G 的单位元

1.2 乘法逆元

p p 为素数,记 ab=a×bmodp a ⋅ b = a × b mod p
在群 N N 中, aN,aN, s.t.aa=e=1 ∀ a ∈ N , ∃ a ′ ∈ N ,   s . t . a a ′ = e = 1
则称 a a ′ a a 关于 modp mod p 的 逆 元 ,记为 inv[a] i n v [ a ]

2. 逆元的性质

2.1 存在唯一性

对于 aN a ∈ N ,有且仅有一个 a a ′ , s.t.aa1modp s . t . a a ′ ≡ 1 mod p

2.2 完全乘性函数

a,bN,inv[a]×inv[b]inv[a×b]modp ∀ a , b ∈ N , i n v [ a ] × i n v [ b ] ≡ i n v [ a × b ] mod p

2.3 性质3

inv[k](p/k)×inv[pmodk](modp) i n v [ k ] ≡ − ( p / k ) × i n v [ p mod k ] ( mod p )

2.4 性质4

a/b=a×inv[b]modp a / b = a × i n v [ b ] mod p

3.求乘法逆元

3.1 暴力枚举

1 1 p1 p − 1 枚举 a a ′ 的值,转为判断性问题,判断 aamodp a a ′ mod p 是否为1

3.2 费马小定理

假定 p p 是素数,且 gcd(a,p)=1 g c d ( a , p ) = 1 ,那么 ap11modp a p − 1 ≡ 1 mod p
那么对于乘法逆元 a×ap21modp a × a p − 2 ≡ 1 mod p
所以 inv[a]ap2modp i n v [ a ] ≡ a p − 2 mod p ,可以使用快速幂来求逆元

3.3 扩展欧几里得算法

对于 aa1 a a ′ ≡ 1 ,我们可以构建方程 ax+py=1 a x + p y = 1 同时令 a=x a ′ = x ,那么就将问题转化为求 x,y x , y 了。
对于 a,p a , p 的最大公约数,并且求解 x,y x , y
假设当前的状态为 (a,b) ( a , b )
1. 当 b=0 b = 0 时, gcd(a,b)=a g c d ( a , b ) = a ,所以 x=1,y=0 x = 1 , y = 0
2. 当 b0 b ≠ 0 时,我们先执行 gcd(b,amodb) g c d ( b , a mod b )

现在 xb+y(amodb)=1x×b+y×a(a/b)y×b=1ya+[x(a/b)y]b=1 x b + y ( a mod b ) = 1 → x × b + y × a − ( a / b ) y × b = 1 → y a + [ x − ( a / b ) y ] b = 1
那么我们构造出的 x,y x ′ , y ′ 作为新的 x,y x , y 满足 ax+by=1 a x + b y = 1 x=y,y=x(a/b)y x ′ = y , y ′ = x − ( a / b ) y ,求出 x x

3.4 欧拉定理

aφ(p)1modp a φ ( p ) ≡ 1 mod p ,则 aφ(p)1 a φ ( p ) − 1 a a 的逆元

其中 φ(p) φ ( p ) 是小于 p p 并且与 p p 互质的个数

3.5 递推

已知 inv[1]=1 i n v [ 1 ] = 1
假设已经求出 inv[i],i<k i n v [ i ] , ∀ i < k ,求 inv[k] i n v [ k ]
p=ak+b,0b<k p = a k + b , 0 ≤ b < k
b×inv[b]=(pak)×inv[b]=ak×inv[b]=k×(a×inv[b])=1modp b × i n v [ b ] = ( p − a k ) × i n v [ b ] = − a k × i n v [ b ] = k × ( − a × i n v [ b ] ) = 1 mod p

inv[k]=a×inv[b]=(p/k)×inv[pmodk]modp i n v [ k ] = − a × i n v [ b ] = − ( p − / k ) × i n v [ p mod k ] mod p

你可能感兴趣的:(数学)