В приведённых выше пяти строчках нет накладок, исключая оптимизацию решения естественно. Меня же с практической точки зрения интересует скользящий и текущий интервал [48, 52] - подпадает ли он под одно минимальное число или разделяется двумя?
Оптимальное решение:
import math
def lcm(num):
ans = 1
for n in range(ans, num + 1):
ans = (ans * n) // math.gcd(ans, n)
return ans
for d in range(9, 100 + 1):
print('{}: {:,}'.format(d, lcm(d)))