乘法逆元

乘法逆元在取模运算中发挥着极其重要的作用。
我们可以很轻松的证明以下式子:

\[(a+b)\%p = (a\%p+b\%p)\%p\\ (a-b)\%p = (a\%p-b\%p)\%p\\ a*b\%p = a\%p*b\%p \]

但是对于除法:

\[\frac{a}{b}\%p \neq \frac{a\%p}{b\%p}\%p \]

举个反例:

\[\frac{5}{3}\%3 \neq \frac{5\%3}{3\%3}\%3 \]

这个时候乘法逆元就发挥作用了,假设我们现在面对一个除法:

\[\frac{a}{b}\equiv x\ (mod\ p)① \]

有没有办法不计算除法也能得到x呢?如果能存在一个数,我们记为\(b^{-1}\),使得:

\[b*b^{-1}\equiv 1\ (mod\ p)② \]

我们把①②式相乘,就得到:

\[a*b^{-1}\equiv x\ (mod\ p) \]

这样我们就可以把所有的除法转化为乘法,然后就可以肆无忌惮的取模了。
那么现在如何求\(b^{-1}\)呢?我们把②式改成恒等式:

\[b*b^{-1} + k*p = 1 \]

这个式子是不是跟扩展欧几里得特别像?

\[a*x+b*y=gcd(a,b) \]

所以我们完全可以用扩展欧几里得求解,又因为gcd(b,p)=1,这就是说只有b,p互质b才有逆元。
我们还可以用费马小定理求解\(b^{-1} = b^{p-2}\),如果用这种方法除了要求b,p互质,还要求p是质数。

posted @ 2022-11-22 20:58  何太狼  阅读(22)  评论(0编辑  收藏  举报