关于GCD欧几里得算法的证明过程: 
 证明一: 
 有两个数 a b 
 设这两个数的gcd(a,b) = g 
 那么假设其中比较大的数 a 
 a = k*b +r; 
 那么当我们对a求对b的最大公约数时 
 如果没有余数r 那么gcd 就等于b 
 那么现在有r了 所以gcd 的取值就取决于r了 
 因为现在我们来看r 
 r一定是个小于b的值 
 所以a和b的GCD问题就变成了我们现在求得就是r和b的GCD问题(r==0 那么就说明 GCD = b;r!=0 说明r对GCD有制约 需要考虑r和b的GCD ) 
 那么问题回到了开始 
 现在的 a = b ; b = r; 
 做重复的操作 
 由于每次的r都会不断缩小 
 所以最后当我们再做a%b的时候为0 那么就说明我们得到了GCD = b;
那么为什么r一定是GCD的倍数 
 我们看 
 a=k1∗gcd 
 b=k2∗gcd 
 那么当较大的a=k3∗b+r 
 r=k3∗b+k1∗b 
 可知 r=k3∗k2∗gcd+k1∗gcd 
 可知r一定是GCD的倍数
所以我们继续用r和b继续求解GCD 
 最终可以求得最后的GCD大小
证明二: 
 还有一种证明我们可以这样来 
 a = k*b +r; 
 r = a mod b 
 设d 为 a和b的一个公约数 那么 
 d|a d|b 设r是a对b的余数r = a- k*b 
 那么d|r 
 所以d也是(b,a%b)的公约数 
 d|b , d|r, 由于a = k*b+r 
 所以d也是a和b的公约数 所以这个d有普遍性 
 (a,b)和(b,a mod b) 的公约数是一样的 
 其最大公约数相等