欧几里得算法(辗转相除法)
欧几里得算法(Euclidean Algorithm)是一种高效计算两个非负整数最大公约数(GCD)的方法。它不仅简单易懂,而且在数学和计算机科学中有着广泛的应用。以下是对该算法的深入讲解,包括其原理、扩展、时间复杂度分析以及实际应用。
1. 算法原理
欧几里得算法的核心思想基于以下数学原理:
- 辗转相除法:对于两个整数 a 和 b(a≥b)(a \geq b)(a≥b),它们的最大公约数 gcd(a,b)\gcd(a, b)gcd(a,b) 等于 gcd(b,amod b)\gcd(b, a \mod b)gcd(b,amodb)。
- 终止条件:当 b = 0 时,a 就是最大公约数。
数学证明:
设 d=gcd(a,b)d = \gcd(a, b)d=gcd(a,b),则 d 能整除 a 和 b。根据除法的定义:
a=b⋅q+r a = b \cdot q + r a=b⋅q+r
其中 q 是商,r=amod br = a \mod br=amodb 是余数。由于 d 能整除 a 和 b,它也能整除 r。因此,gcd(a,b)=gcd(b,r)\gcd(a, b) = \gcd(b, r)gcd(a,b)=gcd(b,r)。
其中 q 是商,r=amod br = a \mod br=amodb 是余数。由于 d 能整除 a 和 b,它也能整除 r。因此,gcd(a,b)=gcd(b,r)\gcd(a, b) = \gcd(b, r)gcd(a,b)=gcd(b,r)。
通过反复应用这一性质,余数 r 会逐渐减小,最终变为 0,此时算法终止。
2. 算法步骤
- 输入:两个非负整数 a 和 b(a≥b)(a \geq b)(a≥b)。
- 计算余数:计算 amod ba \mod bamodb,得到余数 r。
- 替换:将 a 替换为 b,b 替换为 r。
- 重复:重复上述步骤,直到 b = 0。
- 输出:当 b = 0 时,a 即为最大公约数。
示例:
计算 gcd