『算法-ACM竞赛-数学-数论』欧几里得定理和拓展欧几里得定理

『算法-ACM 竞赛-数学-数论』欧几里得定理和拓展欧几里得定理

数学–数论–欧几里得定理和拓展欧几里得定理

欧几里得定理:

gcd(a, b) = gcd(b, a%b)

证明:
我们首先约定:m = gcd(a,b) , n = gcd(b, q) , a = bp +q。(这里的 gcd 含义跟上面一样,q 的含义跟后面式子同)
1. m 是 a,b 的最大公约数,那么 m 整除 a,b
q = a - b
p
m 也可以整除 q
=>m 就是 b 和 q 的公约数
=>n 是 b,q 的最大公约数
=>n >=m

2. =>n 是 q,b 的最大公约数,那么 n 整除 q,b
=>a = b*p + q
=>n 也可以整除 a
=>n 就是 b 和 a 的公约数
=>m 是 b,a 的最大公约数
=>m >= n

3.q=a%b
综上所述,那么我们可以得出 n = m,及 gcd(a, b) = gcd(b ,a%b)

实现:

int gcd(a, b)
{
    if(b == 0)
        return a;
    return gcd(b, a%b);
}

三目运算符优化:

int gcd(a, b)
{
    return b == 0?a:gcd(b, a%b);
}

拓展欧几里得定理:


『算法-ACM竞赛-数学-数论』欧几里得定理和拓展欧几里得定理
https://chiamzhang.github.io/2024/06/29/『算法-ACM竞赛-数学-数论』欧几里得定理和拓展欧几里得定理/
Author
Chiam
Posted on
June 29, 2024
Licensed under