求最大公约数(gcd)和最小公倍数(lcm)算法

【求最大公约数(gcd)和最小公倍数(lcm)算法】1.最大公约数:
算法思想是欧几里得的辗转相除法,gcd(a,b)=gcd(b,a%b)。

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

2.最小公倍数:
最小公倍数的求法利用了最大公约数,即lcm(a,b)=a/gcd(a,b)*b
int lcm(int a,int b){ return a/gcd(a,b)*b; }

注意: 不要写成a*b/gcd(a,b),看似相等,但是当a和b很大时会发生溢出!!

    推荐阅读