• 进阶数论(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

  • 相关阅读:
    23. 霍纳法则(多项式求值快速算法)
    22. 欧几里德算法(求最大公约数GCD)
    [poj 2106] Boolean Expressions 递归
    [poj 1185] 炮兵阵地 状压dp 位运算
    [MOOC程序设计与算法二] 递归二
    [poj 3254] Corn Fields 状压dp
    [hdu 1074] Doing Homework 状压dp
    [hdu 1568] Fibonacci数列前4位
    [haut] 1281: 邪能炸弹 dp
    [hdu 2604] Queuing 递推 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/zjd-ac/p/10803108.html
Copyright © 2020-2023  润新知