求a,b的最大公约数我们经常用欧几里得算法解决,也称辗转相除法, 代码很简短, int gcd(int a,int b){ return (b==0)?a:gcd(b,a%b); } 但其中的道理却很深刻,完全理解不简单,以前都只是记一下代码,今天研究了很久,才差不多理解了其中的原因 从代码可以看出,gcd(a,b)=gcd(b,a%b),关键就在于证明这个等式 证明如下, 设c=gcd(a,b),则a=kc,b=nc(n,c为正整数), 设r=a%b,可得r=a-mb(m为a/b向下取整),…