逆元学习

模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,

未完待续。。。

 

posted on 2015-09-09 22:51  _fukua  阅读(201)  评论(0编辑  收藏  举报