zoukankan      html  css  js  c++  java
  • 扩展欧几里德算法

    欧几里德算法戳这


     一、概述

    扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。——百度百科

    二、代码实现

    //摘自《挑战程序设计竞赛 第二版》
    int extgcd(int a,int b,int& x,int& y){
    int d=a;
    if (b!=0){
        d=extgcd(b,a%b,y,x);
        y-=(a/b)*x;
    }else{
        x=1;y=0;
    }
    return d;
    }

    三、算法分析 (摘自http://blog.csdn.net/acmore_xiong/article/details/47694909)

    需要用到的欧几里德表达式

    ①gcd(a,b)=gcd(b,a%b)

    ②gcd(a,0)=a

    设如下两个方程:

    ax+by  =  gcd(a,b)  =  d;

    bx’+(a%b)y’  =  gcd(b,a%b);

    因为,gcd(a,b)  =  gcd(b,a %b),

    所以,ax+by  =  bx’+(a%b)y’  =  bx’ +(a – [a/b]*b)y’  =  ay’ + b(x’ – [a/b]y’),

    恒等关系有 x = y’ , y = (x’ – [a/b]y’),[a/b]表示a/b的值向下取整。

    所以参数x,y不断的被取代,函数递归下去,但是a%b会等于0,等于0时,gcd(a,0)=a,所以a*x+0*y=a,x=1,y=0。然后返回得到x,y的值。

  • 相关阅读:
    python变量和常量
    python运算符
    python 数据类型强制转换
    Python 变量的缓存机制
    Python格式化输出
    Python 自动类型转换
    Python 六大标准基础数据类型
    Python 基础
    pyhton 初识
    计算机基础
  • 原文地址:https://www.cnblogs.com/LuRenJiang/p/7445734.html
Copyright © 2011-2022 走看看