欧几里得算法
欧几里得算法也称为辗转相除法,用于计算两个数的最大公因数,一般用gcd(a,b)来表示a和b的最大公因数。
欧几里得算法基于下面的这个定理
设a、b均为正整数,则gcd(a,b)=gcd(b,a%b)
证明:设a=k*b+r,k和r分别是a除以b得到的商和余数
则有a-r=k*b成立
设d是a和b的公约数
那么由a=k*b+r,得d也是r的一个因数
因此d是b和r的公因数
因此d既是a和b的公因数,也是b和a%b的公因数
那么,最大公因数也相等
即gcd=(a,b)=gcd(b,a%b)
证毕。
递归式:gcd(a,b)=gcd(b,a%b)
代码实现
int gcd(int a,int b){
if(b==0)
return