美文网首页
(扩展)欧几里得算法

(扩展)欧几里得算法

作者: devilisdevil | 来源:发表于2021-04-21 22:51 被阅读0次
  • 又称辗转相除法,是指用于计算两个正整数a,b的最大公约数 (GCD, Greatest Common Divisor),扩展欧几里得除了求出最大公约数,还找出相应的x,y(其中一个很可能是负数)(ax+by=kq, 通常扩展欧几里得算法里我们使用的k=1)
  • 欧几里得算法
  • 扩展欧几里得算法
    • 贝祖等式(贝祖定理):是一个关于最大公约数的定理,对任何整数a,b和它们的最大公约数d,方程ax+by=m有整数解当且仅当m是d的倍数(扩展欧几里得求逆元中我们取这个倍数为1,即m=d)
    • int egcd(int a, int b, int &x, int &y) {
          if (b == 0) {
              x = 1;
              y = 0;
              return a;
          }
          int nx, ny;
          // b*nx + a%b*ny = q
          int q = egcd(b, a % b, nx, ny);
          //   a*x + b*y
          // = a*ny + b*nx - b*(a/b)*ny
          // = b*nx + (a - b*(a/b))*ny
          // = b*nx + a%b*ny
          // = q
          x = ny;
          y = nx - (a / b) * ny;
          return q;
      }
      
    • 这里如果q=1, 即上面求的x,y是对应了等式a*x+by=1,可以求逆元
    • /**
       * @returns (x % b + b) % b where a*x + by = gcd(a, b)
      */
      int mod_inv(int a, int b) {
          int x, y;
          egcd(a, b, x, y);
          return (x % b + b) % b; // possible that x < 0
      }
      
  • 扩展
    • 求最小公倍数lcm (c++17中的numeric头文件也已经有了lcm这个函数)
    • 有了最大公约数,求最小共倍数 (LCM, Least Common Multiple)就是: a * b / gcd(a, b)

相关文章

  • 扩展欧几里得算法

    资料 欧几里得算法 扩展欧几里得算法 扩展欧几里得算法应用 欧几里得算法 欧几里得算法用于求两个数的最大公约数 证...

  • 扩展欧几里得算法

    扩展欧几里得算法(Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展...

  • 算法学习(2)----丢番图方程

    之前一篇随笔"算法学习(1)----扩展欧几里得算法"记录了对朴素欧几里得算法和扩展欧几里得算法的学习和认识...

  • 扩展欧几里德算法

    扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)...

  • 组合数求解

    扩展欧几里得算法原理求解逆元的方法(本文采用扩展欧几里得算法进行求解)求组合数的两种方法Lucas定理

  • 扩展欧几里得算法

    欧几里得算法 文中用 表示求模运算, 表示整除, 比如 欧几里德算法(称辗转相除法),用于计算两个整数a, b的...

  • 扩展欧几里得算法

    扩展欧几里得算法 对于任意整数a,b,存在一对整数x,y,满足ax+by=gcd(a,b)。证明:当b=0时显然x...

  • (扩展)欧几里得算法

    又称辗转相除法,是指用于计算两个正整数a,b的最大公约数 (GCD, Greatest Common Diviso...

  • 欧几里得算法以及扩展

    最近要写RSA非对称加密算法,其中涉及到一些最大公约数的知识。 1 欧几里得基础算法 即辗转相除法,用于计算两个整...

  • GCD欧几里得算法 & EXGCD扩展欧几里得算法

    欧几里得算法欧几里得算法 (Euclidean algorithm) 是用来解决最大公约数问题的,通常采用辗转相除...

网友评论

      本文标题:(扩展)欧几里得算法

      本文链接:https://www.haomeiwen.com/subject/ggjtrltx.html