1. 程式人生 > >gcd lcm

gcd lcm

gcd log 證明 就是 最大公約數 true 兩個 urn 最小

gcd 是表示兩個數的最大公約數

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

在這裏 , gcd(a, b) 是等於 gcd(b, a%b) , 證明如下 :

令 a = kb + p , gcd(a, b) = c , 那麽就是 a, b 都可以整除 c , 那麽 kb 也可以整除 c ,那麽 a - kb 也可以整除 c , 所以 b 和 a%b 都可以整除 c

lcm 是表示兩個數的最小公倍數 , 那麽兩個數的最小公倍數就等於兩數之積除以兩個數的最小公倍數

證明如下 :

  設兩個數 a = k1 * gcd, b = k2*gcd, 設 a , b 兩個數的最小公倍數是 lcm , 那麽lcm = t1 * a, lcm = t2 * b , 那麽就有 t1*a = t2*b, 即 t1*k1*gcd = t2*k2*gcd , 因為t1 與 t2 互質, k1 與 k2互質,所以 t1 = k2, t2 = k1, 那麽 lcm = k1*k2*gcd , 即 lcm = a*b/gcd;

gcd lcm