
unsigned gcd(unsigned a, unsigned b) {
  while (b) {
    unsigned t = b;
    b = a % b;
    a = t;
  }
  return a;
}

unsigned lcm(unsigned a, unsigned b) {
  return a/gcd(a,b) * b;
}
