99+木头的博客&
Enjoy writing code.

进阶数论(1)逆元

    [背景]

    我们知道根据随时取模原理(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

posted @ 2019-05-02 19:08  99+木头  阅读(413)  评论(0编辑  收藏  举报