Что делает скрипт в Python?

Я выполнял задание из Проекта Эйлера, в котором нужно найти наименьшее число, которое делится без остатка на числа от 1 до 20 включительно. Я понял, что можно использовать цикл с range, но так и не придумал как, решил иначе.
Позже в комментариях нашел такой скрипт, но не разобрался, как он работает. Объясните, пожалуйста.

Как увеличивается i, если второе условие(во внутреннем цикле) не срабатывает? Сначала выполняется внешний цикл или внутренний?
i = 1
for k in (range(1, 21)):
    if i % k > 0:
        for j in range(1, 21):
            if (i*j) % k == 0:
                i *= j
                break
print (i)
  • Вопрос задан
  • 994 просмотра
Решения вопроса 1
obezh
@obezh
Python разработчик
Сначала срабатывает первый цикл до выполнения условия, когда оно выполняется - срабатывает второй цикл до выполнения условия, как только оно выполняется - изменяется i и переходит к первому циклу. i не меняется, пока скрипт не перейдёт ко второму циклу, ко второму циклу он переходит только при выполнении условия в первом.
Для таких вещей полезно иногда использовать print на каждой итерации каждого цикла, чтоб смотреть где что происходит, если трудно понять это сходу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
longclaps
@longclaps
Я понял, что можно использовать цикл с range, но так и не придумал как, решил иначе.

Число, которое без остатка делится на некие другие числа, называется Наименьшим Общим Кратным (НОК). Этому в школе учат, но не всех. Для вычисления НОК есть формула, выражающая его через НОД (Наибольший Общий Делитель) - этому в школе учат, но не всех.
Как же так вышло-то в школе?
from math import gcd

a = 2
for b in range(3, 21):
    a = a * b // gcd(a, b)
print(a)
Ответ написан
solotony
@solotony
code for food, caviar preferably
2
6
12
60
420
840
2520
27720
360360
720720
12252240
232792560
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 250 000 руб.
BestDoctor Москва
от 120 000 до 150 000 руб.
YLab Тольятти
от 90 000 до 150 000 руб.