标签:
定义:满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。
(1)为什么要有乘法逆元呢?
答:当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。
(2)如何求逆元?
答:我们可以通过求b关于p的乘法逆元k,将a乘上k再模p( 即(a*k)%p,这样比较好算 )。其结果与 (a/b) % p 等价。
(3)如何证明?
证明:
根据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的结果肯定是为正整数。
所以原式等于:(a/b) mod p
证毕!
标签:
原文地址:http://www.cnblogs.com/xcw0754/p/4844145.html