欧几里得算法求最大公约数
算法:
一般把a,b的最大公约数记成gcd(a,b) , gcd(a,b) = gcd(b,a%b) (a>b>0).
具体算法如下:
①递归:
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
②迭代:
证明过程:
假设 a = kb + r 此时 r = a % b
假设 gcd(a,b) = c 所以 c|a、c|b 即 c 是a和b的约数
此时 r = a - kb 所以 c 也是 r 的约数
所以gcd(a,b) = gcd(b,a % b) ,当r = 0 时 也就是 b 为公约数