码迷,mamicode.com
首页 > 其他好文 > 详细

gcd lcm

时间:2018-02-19 19:39:42      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:就是   post   cpp   最大公约数   bsp   lcm   body   gcd   int   

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

标签:就是   post   cpp   最大公约数   bsp   lcm   body   gcd   int   

原文地址:https://www.cnblogs.com/ccut-ry/p/8454250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!