逆元
除以一个数再取模 = 乘以这个数的逆元再取模
设 inv[b] 是b的逆元,则(a/b) mod p = (a * inv[b]) mod p
(1)一个数的逆元是什么 一个数x在模p的条件下的逆元是多少
(2)一个数的逆元有无穷个,只求最小正整数即可
(3)一个数x在模p的条件下不一定有逆元,x关于p的逆元存在当且仅当x和p互质
推导:设 a 为 x 的逆元,b 为任意整数 //证明 x 与 p 必须互质
x * a ≡ 1 (mod p)
= x * a = 1 - b*p
= x * a +b * p = 1
若 x 与 p 不互质,则 x 和 p 存在公约数 d = gcd(x,p) >1
提取出 d ,得到:d*(x div d*a + p div d*b)=1
(x div d*a + p div d*b)= 1 div d //移项
易知x,p能整除 d ,所以括号内定为整数
又因为 d > 1,等式右边必为真分数,等式无解
何为乘法逆元
对于两个数 a,p,若gcd(a,p)=1 (即a,p互质),则一定存在另一数b,使得a*b ≡ 1(mod p) //上面已证
并称此时的 b 为 a 关于 1 模 p 的乘法逆元,记 b 为 inv(a) 或 a^-1。
求逆元的方法
1.费马小定理
当有两个数 a,p 满足gcd(a,p)=1时,则有 a^p ≡ a (mod p)
变形:a * a^(p-2)≡ 1ÿ