gcd and lcm