辗转相除法,也称为欧几里得算法,是一种用于求两个正整数最大公约数(GCD)的古老而有效的方法。其基本原理是利用两个整数的最大公约数等于其中较小的数与两数相除余数的最大公约数。具体步骤如下:
1. 用较大的数除以较小的数,得到余数。
2. 然后用较小的数除以上一步的余数,再得到一个新的余数。
3. 重复上述步骤,直到余数为0。此时,最后一个非零余数即为两个数的最大公约数。
例如,求91和247的最大公约数:
247 ÷ 91 = 2 余 65
91 ÷ 65 = 1 余 26
65 ÷ 26 = 2 余 13
26 ÷ 13 = 2 余 0
因此,13是91和247的最大公约数。
辗转相除法的优点是它不需要进行质因子分解,且算法效率高。在计算机科学中,该算法也常用于分数约分、判断两个数是否互质等问题。此外,辗转相除法还可以推广到求多个数的最大公约数,方法是将其中任意两个数的最大公约数再与第三个数求最大公约数,依次类推,直到最后一个数为止。
递归实现辗转相除法的伪代码如下:
```
function gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a mod b)
```
在实际编程中,也可以使用迭代法来实现辗转相除法,通过不断更新需要做取模运算的两数,直到除数为0时结束循环,此时的被除数即为最大公约数。
辗转相除法不仅在数学中有广泛应用,在计算机科学和密码学中也有重要应用,例如在RSA加密算法中用于计算模逆元。