[背景]
我们知道根据随时取模原理(a*b)mod p=( a mod p*b mod p)mod p。那么对于除法有没有(a/b)mod p=( a mod p/b mod p)mod p这个性质呢?很显然是没有的。这个时候,我们就有必要引入逆元这个概念。
[概念]
我们想,如果可以把(a/b)mod p转化为(a*k)mod p就可以运用随时取模。那么这个k就是b在模p意义下的逆元(b,p字母含义在本篇文章通篇适用),简写为inv(b)。
[求逆元]
那么对于一个数b,它的逆元时多少呢?我们可以类比倒数来解决这一问题。倒数的定义是这样的:一个数除以另一个数,就相当于乘这个这个数的倒数。如5/6=5*(1/6),(1/6)就是6的倒数。对于一个数有
a*(a的倒数)=1
类比一下
b*inv(b)≡1(mod p)
此时我们如果想要知道k的值,我们需要再引入费马小定理:如果p是一个质数,而整数a不是p的倍数,则有
a^(p-1)≡1(mod p)
那么有
b*b^(p-2)≡1 (mod p)
那么
inv(b)≡b^(p-2)(mod p)
有了这个等式,我们可以轻松用快速幂求得inv(b),但是我们还可以用扩展欧几里得来求逆元。但是由费马小定理的前提可得b和p互质。也就说明如果b和p不互质,则b没有在模p意义下的逆元,这在用扩展欧几里得中也是一个非常重要的前提。
2019-05-02 19:12:48