#include <iostream>
namespace
{
template <typename T>
T gcd(T a, T b)
{
for (;;) {
if (a == 0) { return b < 0 ? -b : b; }
b %= a;
if (b == 0) { return a < 0 ? -a : a; }
a %= b;
}
}
template <typename T>
T lcm(T a, T b)
{
T n = gcd(a, b);
if (n != 0) { n = a / n * b; }
return n < 0 ? -n : n;
}
}
void Euler5(int N = 20)
{
int number = 1;
for (int i = 2; i <= N; ++i) {
number = lcm(number, i);
}
std::cout << "5. smallest(" << N << ")=" << number << '\n';
}
int main()
{
Euler5();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlCnsKCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgoJVCBnY2QoVCBhLCBUIGIpCgl7CgkJZm9yICg7OykgewoJCQlpZiAoYSA9PSAwKSB7IHJldHVybiBiIDwgMCA/IC1iIDogYjsgfQoJCQliICU9IGE7CgkJCWlmIChiID09IDApIHsgcmV0dXJuIGEgPCAwID8gLWEgOiBhOyB9CgkJCWEgJT0gYjsKCQl9Cgl9CgoJdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CglUIGxjbShUIGEsIFQgYikKCXsKCQlUIG4gPSBnY2QoYSwgYik7CgkJaWYgKG4gIT0gMCkgeyBuID0gYSAvIG4gKiBiOyB9CgkJcmV0dXJuIG4gPCAwID8gLW4gOiBuOwoJfQp9Cgp2b2lkIEV1bGVyNShpbnQgTiA9IDIwKQp7CglpbnQgbnVtYmVyID0gMTsKCWZvciAoaW50IGkgPSAyOyBpIDw9IE47ICsraSkgewoJCW51bWJlciA9IGxjbShudW1iZXIsIGkpOwoJfQoJc3RkOjpjb3V0IDw8ICI1LiBzbWFsbGVzdCgiIDw8IE4gPDwgIik9IiA8PCBudW1iZXIgPDwgJ1xuJzsKfQoKaW50IG1haW4oKQp7CglFdWxlcjUoKTsKfQ==