欧几里德算法(自写理解)

gcd欧几里德算法  求取最大公约数gcd(a,b)

   这个不用多说了

extgcd拓展欧几里德算法 用于求解 ax+by=gcd(a,b)的解

   这个要多说一下

   ax+by=c,a,b,c都是常数)

   这就是一个直线方程嘛!(x,y)就是一条直线的轨迹

   但是呢  我们在计算机中经常要求一些离散的东西,也就是我们要求整数解

   这个咋求呢,就可以用这个神仙方法extgcd可以来求

   我们可以用extgcd求解 ax+by=c的整数点的解

   

   extgcd的内容呢:extgcd可以能求gcd----原理嘛,自己慢慢想这个神仙方法。extgcd不是直接去解我们的方程 ax+by=c的,但是可以间 接求解,extgcd 求解的是什么呢

extgcd 可以直接求解的是 ax+by=gcd(a,b)的解。

也就是说我们调用extgcd可以获得的结果是ax+by=gcd(a,b)的一组整数解。

那我们要求的是什么  ax+by=c 而不是ax+by=gcd(a,b)

那咋办   我们可以设置一个变量 k    axk+byk=gcd(a,b)*k 这个很好说吧!就是等式两边同时乘k。  

如果我们存在整数使得gcd(a,b)*k等于c   那我们要求的ax+by=c的解就出来啦

就是我们extgcd 求出的解乘上这个k

如果不存在这样的k咋办("▔□▔自然那结果就是无解啦

   

原文地址:https://www.cnblogs.com/DWVictor/p/10283215.html