Есть задачка:
2520 - это наименьшее число, которое можно разделить на каждое из чисел от 1 до 10 без остатка.
Найдите такое наименьшее положительное число, которое делится на все числа от 1 до 20?
Задачку эту я решил, написав плохо оптимизированный алгоритм полного перебора вариантов.
calculate = Truemax_number = 20min_number = 1current_divisible = 2520count = 0while calculate: for i in range(2, max_number + 1): if current_divisible % i == 0: count += 1 min_number = current_divisible else: count = 0 break current_divisible += 1 if count == max_number: calculate = Falseprint(min_number) # 232792560Ответом этой задачки является число 232792560, но мой алгоритм считает это очень долго. Около 15 минут.
Никак не могу понять, как лучше оптимизировать данный код.
question@mail.ru
·