Auto commit

This commit is contained in:
smallkun 2025-04-05 19:25:52 +08:00
parent 2c3e944e03
commit f725ee8c97

52
辗转相除法原理.md Normal file
View File

@ -0,0 +1,52 @@
辗转相除法也称为欧几里得算法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的最大公约数就是那个数本身。