逆元学习
模p乘法逆元:
对于整数a,p,若存在整数b,满足ab mod p = 1 ,则说b是a模p的乘法逆元
a存在模p乘法逆元的充分必要条件是gcd(a,p)=1
证明略。
那什么时候我们需要用到逆元呢?
比如我们要求a/b%p,我们知道,乘法是可以直接取余,但是除法是不可以直接取余的。
这个时候我们要怎么转化呢?
如果b有模p的乘法逆元的话,
设乘法逆元为x,则bx % p = 1
则a/b%p=(a/b)*bx % p= ax % p
这样我们只要求出x,就可以求出ax%p,即a/b%p了
接下来是求x的时候了:
当p是素数的时候,
由费马小定理,有a^p≡a(mod p),即a^(p-1)≡1(mod p),即a*a^(p-2)≡1(mod p)
而我们知道ax%p=1,所以有x=a^(p-2)
这个时候用快速幂加速得到x
当p不是素数的时候,
欧拉函数或者扩展gcd,
未完待续。。。