gcd lcm