模意义下求乘法逆元的各种姿势

乘法逆元

定义

ax1modp a x ≡ 1 mod p ,则称 x x a a modp mod p 意义下的逆元,记为 xa1modp x ≡ a − 1 mod p

当然, a a 也是 x x modp mod p 意义下的逆元

ab=ab1 a b = a ⋅ b − 1

几乎所有模意义下的除法都需要逆元

有逆元的充要条件

a a modp mod p 意义下有逆元的充要条件: (a,p)=1 ( a , p ) = 1

逆元的求法
EXGCD

若求 a a modp mod p 意义下的逆元,则可以转化为求解如下方程

ax+py=1 a x + p y = 1

有EXGCD的相关知识可以得到,当且仅当 (a,p)=1 ( a , p ) = 1 时有解(有逆元的充要条件的证明)

费马小定理

如果 p p 为质数,则 ap11modp a p − 1 ≡ 1 mod p

aap21 ∴ a ⋅ a p − 2 ≡ 1

ap2a1 ∴ a p − 2 ≡ a − 1

欧拉定理

将费马小定理中的 p2 p − 2 换为 φ(p)1 φ ( p ) − 1 即可

p p 可以不是质数

递推

用于 O(n) O ( n ) 预处理 [1n] [ 1 ⋯ n ] 的逆元

构造 p=ki+r p = k i + r

ki+r0modp ∴ k i + r ≡ 0 mod p

ki=r ∴ k i = − r

i1=kr1 ∴ i − 1 = − k ⋅ r − 1

其中 k=pi,r=p%i k = ⌊ p i ⌋ , r = p % i

i1=piinv[p%i] ∴ i − 1 = − ⌊ p i ⌋ ⋅ i n v [ p % i ]

为了防止出现负数,通常的写法是这样的

inv[i]=(mod-mod/i)*inv[mod%i]%mod;

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