zoukankan      html  css  js  c++  java
  • 求乘法逆元

    由于在计算除法时,mod 运算不能直接加在除数被除数后,因此需要将 n / a (mod b )转化为 n * x (mod b ),以便于进行模运算。求 x 的过程就称为求逆元。

    对于 a 、b (a 与 b 互素)满足 n / a ≡ n * x (mod b ),则称 x 为 a 模 b 的逆元;

    一般有两种求逆元的方式:扩展欧几里得求逆元和欧拉-费马定理求逆元;

    1、扩展欧几里得求逆元:

    见(欧几里得与扩展欧几里得);

    http://www.cnblogs.com/cenariusxz/p/4323872.html

    2、欧拉-费马定理求逆元(通过快速幂实现):

    根据欧拉函数 φ(x) 表示小于自变量 x 并与 x 互素的自然数的个数;

    根据欧拉定理(基本是用剩余系累加推出来的)

     a 与 x 互素时:

    a φ(x)≡ 1 (mod x)

    即 a * a φ(x)-1≡ 1 (mod x)

    所以 :

      a φ(x)-1 即为 a 模 x 的逆元;

    而费马小定理求的则是欧拉函数的特殊情况:

    当 x 为素数时,φ(x)= x - 1 ;

    因此当 a 与 x 互素且 x 为素数时:

      a x - 2 即为 a 模 x 的逆元;

  • 相关阅读:
    django的模板层
    django的视图层
    django的路由层
    web应用与http协议
    索引
    pymysql模块的使用
    多表查询
    单表查询
    数据的增删改
    自定义form组件
  • 原文地址:https://www.cnblogs.com/cenariusxz/p/4330820.html
Copyright © 2011-2022 走看看