一、辗转相除法的原理
假设 a / b =c …… d
欧几里得算法:被除数与除数的公约数和除数与余数的公约数相同,那么它们的最大公约数也相同
即:a 和 b 的最大公约数与 b 和 d 的最大公约数相同
二、辗转相除法代码
传值时不必考虑x与y哪个大与小,比如求35与15的最大公约数:
35/15=2……5 15/35=0……15
15/5=3……0 35/15=2……5
15/5=3……0
参数1小于参数2只是多计算了一步,并不影响结果
通过辗转相除法可写递归代码如下:
int GCD(int x, int y) { if (x % y == 0) { return y; } else { GCD(y, x % y); } }