关于欧几里得算法和拓展欧几里德定理的证明(不定方程求解方法)

---------------------------------欧几里得算法和拓展欧几里得定理-------------------------------------------------------
欧几里得算法就是
gcd ( a ,b ) == gcd ( b , a%b )
拓展欧几里得定理就是对于ax+by = gcd ( a , b )中a,b为正整数, 那么至少存在一组整数解
--------------------------------欧几里得算法的证明--------------------------------------------------------------------------
欧几里得算法其实就是辗转相除,那么gcd(a,b) == gcd ( b ,a%b )是为什么呢?
设gcd ( a, b ) = d;
那么a = d*p , b = q*d , p和q互质
a%b = a - (a/b)*b = p*d - ( p/q)*q*d = d * ( p - (p/q)*q),
所以当(p/q)*q == p的时候,a已经能够整除b,这个时候我们可以知道b就是最大公约数
但是如果(p/q)*q != p 的时候,也就是p不能够整除q,那么得到了一个更小的数,d*(p-(p/d)*q),
那么我们只需要证明这个数是一个与q互质即可,
如果gcd ( p - (p/q)*q , q ) != 1, 那么gcd ( p , q ) != 1 , 那么与p和q互质矛盾,所以p-(p/q)*q与q互质
-----------------------------拓展欧几里得定理的证明-----------------------------------------------------------------------
ax + by == gcd ( a , b )
== gcd ( b , a%b ) (秦九韶算法)
== b*x1 + ( a - (a/b)*b ) *y1
== a*y1 + b*(x1 - (a/b)*y1
所以x = y1 , y1 = x1 - (a/b)y1
可以一直递归的加深深度
根据欧几里得算法我们我们可以知道,会到达某一深度的时候,a%b == 0 ,那个时候 axi + byi = b*x(i+1) == gcd ( 0 , b ) == b ,所以 yi == x(i+1) == b , xi == 0
所以回溯计算,就能够得到不定方程额一个解。
--------------------------不定方程利用exgcd进行求解---------------------------------------------------------------------------
那么对于普通的ax+by == c 的情况,我们应该如何求解呢?
x1=x*(c/gcd(a,b)),y1=y*(c/gcd(a,b))

为什么呢?
就是方程左右两边同时扩大c/gcd(a,b)倍,原方程依旧相等
--------------不定方程的通解的求取----------------------------------------------
d=gcd(a,b). 那么x=x0+b/d*t; y=y0-a/d*t; 其中t为任意常整数。

很容易想,不做赘述!!!!
【关于欧几里得算法和拓展欧几里德定理的证明(不定方程求解方法)】

    推荐阅读