• 逆元 【数学】


    逆元

    今天新学了个东西,十分有用常见的----------逆元!!!

    什么是逆元

    当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:

    设c是b的逆元,则有b*c≡1(mod m);

    则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m);

    即a/b的模等于a*b的逆元的模;

    推广一波费马小定理:

    假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。

    同余证法:
    任意取一个质数,比如13。考虑从1到12的一系列整数1,2,3,4,5,6,7,8,9,10,11,12,给这些数都乘上一个与13互质的数,比如3,得到3,6,9,12,15,18,21,24,27,30,33,36。对于模13来说,这些数同余于3,6,9,12,2,5,8,11,1,4,7,10。这些余数实际上就是原来的1,2,3,4,5,6,7,8,9,10,11,12,只是顺序不同而已。
    把1,2,3,…,12统统乘起来,乘积就是12的阶乘12!。把3,6,9,…,36也统统乘起来,并且提出公因子3,乘积就是3*12×12!。对于模13来说,这两个乘积都同余于1,2,3,…,12系列,尽管顺序不是一一对应,即3*12×12!≡12!mod 13。两边同时除以12!得3*12≡1 mod 13。如果用p代替13,用x代替3,就得到费马小定理xp-1≡1 mod p。

    最后来一波阶乘逆元:

    我们记数字 x 的逆元为f(x) (%MOD)。

    因为 n! = (n-1)! * n

    所以 f(n!) = f( (n-1)! * n) = f( (n-1)! ) * f(n)。

    所以 f( (n-1)! ) = f(n!) * f( f(n) ) = f(n!) * n   (逆元的逆元就是他自身)

    这样子我们就可以用后项推出前面的项了。

    加油加油加油!!! fighting fighting fighting !!!

  • 相关阅读:
    ApkTool动态打包
    Android
    hi3531 SDK 编译 uboot, 改动PHY地址, 改动 uboot 參数 .
    Unityclient通信測试问题处理(二)
    LIVE555研究之三:LIVE555基础
    【Unity Shaders】使用CgInclude让你的Shader模块化——创建CgInclude文件存储光照模型
    deep-learning-frameworks
    Upgrade R (升级R语言)
    Upgrade Bioconductor
    linux 中 ll 命令如何让查询结果按时间升序或降序排序?
  • 原文地址:https://www.cnblogs.com/Frank-King/p/9303961.html
Copyright © 2020-2023  润新知