Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion zh-hans/basics_algorithm/math/gcd.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

## 最大公约数(GCD, Greatest Common Divisor)

常用的方法为辗转相除法,也称为欧几里得算法。不妨设函数`gcd(a, b)`是自然是`a`, `b`的最大公约数,不妨设`a > b`, 则有 $$a = b \times p + q$$, 那么对于`gcd(b, q)`则是`b`和`q`的最大公约数,也就是说`gcd(b, q)`既能整除`b`, 又能整除`a`(因为 $$a = b \times p + q$$, `p`是整数),如此反复最后得到`gcd(a, b) = gcd(c, 0)`, 第二个数为0时直接返回`c`. 如果最开始`a < b`, 那么`gcd(b, a % b) = gcd(b, a) = gcd(a, b % a)`.
常用的方法为辗转相除法,也称为欧几里得算法。不妨设函数`gcd(a, b)`是自然数`a`, `b`的最大公约数,不妨设`a > b`, 则有 $$a = b \times p + q$$, 那么对于`gcd(b, q)`则是`b`和`q`的最大公约数,也就是说`gcd(b, q)`既能整除`b`, 又能整除`a`(因为 $$a = b \times p + q$$, `p`是整数),如此反复最后得到`gcd(a, b) = gcd(c, 0)`, 第二个数为0时直接返回`c`. 如果最开始`a < b`, 那么`gcd(b, a % b) = gcd(b, a) = gcd(a, b % a)`.

关于时间复杂度的证明:可以分`a > b/2`和`a < b/2`证明,对数级别的时间复杂度,过程略。

Expand Down