class-notes/辗转相除法原理.md
2025-04-05 19:25:52 +08:00

52 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

辗转相除法也称为欧几里得算法Euclidean Algorithm是一种用于计算两个整数的最大公约数Greatest Common Divisor, GCD的有效方法。
### 最大公约数的定义
首先我需要明确什么是最大公约数。对于两个整数a和b假设a > b它们的最大公约数是能够同时整除a和b的最大的正整数。例如12和18的最大公约数是6因为6是能够整除12和18的最大的数。
### 辗转相除法的基本步骤
根据我所了解,辗转相除法的基本步骤如下:
1. 用较大的数除以较小的数,得到余数。
2. 然后用较小的数除以这个余数,再得到一个新的余数。
3. 重复这个过程直到余数为0。此时除数就是这两个数的最大公约数。
让我用一个具体的例子来试试这个方法。
### 示例:计算 48 和 18 的最大公约数
1. **第一步**48 ÷ 18
- 48 ÷ 18 = 2 余 12因为 18 × 2 = 3648 - 36 = 12
- 现在用除数18除以余数12。
2. **第二步**18 ÷ 12
- 18 ÷ 12 = 1 余 6因为 12 × 1 = 1218 - 12 = 6
- 现在用除数12除以余数6。
3. **第三步**12 ÷ 6
- 12 ÷ 6 = 2 余 0因为 6 × 2 = 1212 - 12 = 0
- 余数为0过程结束。
最后的除数就是6因此48和18的最大公约数是6。这与我的预期一致因为6确实是能同时整除48和18的最大的数。
#### 数学原理
辗转相除法的有效性基于以下两个数学原理:
1. **除法算式的基本性质**
对于任何两个正整数a和ba > b可以表示为
a = b × q + r其中q是商r是余数且0 ≤ r < b
2. **GCD的性质**
GCD(a, b) = GCD(b, r)。也就是说a和b的最大公约数等于b和r的最大公约数
为什么这个性质成立
- 设d = GCD(a, b)即d能整除a和b
- 因为a = b × q + r所以r = a - b × q
- 既然d能整除a和b那么d也能整除r因为它是a和b的线性组合)。
- 因此d也是b和r的一个公约数
- 现在假设存在一个更大的公约数d' > d能整除b和r。
- 但是a = b × q + r所以d'也能整除a这意味着d'也是a和b的公约数且大于d这与d是最大公约数矛盾。
- 因此GCD(a, b) = GCD(b, r)。
通过这个性质我们可以将原问题逐步简化直到余数为0。此时GCD(b, 0) = b因为任何数和0的最大公约数就是那个数本身。