最大公约数 最小公倍数

//if a < b, it can swap their position.
int gcd(int a, int b){
    a = abs(a);  b = abs(b);
    while(b != 0){
        int t = a%b;
        a = b;
        b = t;
    }
    return a;
}
int gcd(int a, int b){
  return (b==0) ? a : gcd(b,a%b);
}
//a * b = gcd(a,b) * lcm(a,b)
//divide before multiply avoid overflow,
int lcm(int a, int b){
    return a / gcd(a,b) * b;
}