zoukankan      html  css  js  c++  java
  • 进阶数论(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

  • 相关阅读:
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    [iOS微博项目
    APScheduler: standalone vs daemonic
    一句话解释jquery中offset、pageX, pageY、position、scrollTop, scrollLeft的区别
    cocos2d-x box2d使用调试绘图
    Maven管理Android项目1
    mina socket底层主流程源码实现
    5种IO模型
  • 原文地址:https://www.cnblogs.com/zjd-ac/p/10803108.html
Copyright © 2011-2022 走看看