乘法逆元的应用
这个博客讲的很好,直接拉过来了。 http://blog.sina.com.cn/s/blog_7c4c33190100s48a.html 网络上讲的也很少,这个算是最清楚的了。 定义: 满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。 为什么要有乘法逆元呢? 当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。 我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。 证: 根据b*k≡1 (mod p)有b*k=p*x+1。 k=(p*x+1)/b。 把k代入(a*k) mod p,得: (a*(p*x+1)/b) mod p =((a*p*x)/b+a/b) mod p =[((a*p*x)/b) mod p +(a/b)] mod p =[(p*(a*x)/b) mod p +(a/b)] mod p //p*[(a*x)/b] mod p=0 所以原式等于:(a/b) mod p 更简单的证明: a/b mod p = a* (b*b^(-1) ) /b =a*b^(-1); 至于怎么求解二元不定方程,参见扩展欧几里得算法。(extended-gcd) http://blog.sina.com.cn/s/blog_7c4c33190100s4a8.html