假如需要求1997和615两个正整数的最大公约数,以下使用欧几里得算法。
1997 / 615=3(余152)
615 / 152=4(余7)
152 / 7=21(余5)
7 / 5=1(余2)
5 / 2=2(余1)
2 / 1=2(余0)
最后得到最大公约数为1。
叫辗转相除是因为,计算的过程中,除数与被除数在更新后总要交换来回除,所以叫辗转
求两个数的最大公约数的代码实现
int gcd(int a, int b)
{
return b==0?a:gcd(b, a%b);
}