Легкими путями не хожу. Придумал свой алгоритм и хочется его реализовать. Для каждой введенной переменной создается два цикла с вложенными циклами. Суть его в следующем: каждая из двух переменных последовательно начинает делиться на число, начиная с двух. Это число итерируется внешним циклом. Внутренний цикл это делает до тех пор, пока деление на внешний итератор не оставляет остатка. Параллельно в предварительно созданные списки записывается число, равное внешнему итератору, до тех пор, пока выполняется внутренний цикл. Если деление оставляет остаток, выходим из внутреннего цикла, внешний итератор увеличивается на 1, проверяем условие (если выполнен внутренний цикл, то true), изменяем переменную до значения, которого достигли внутренним циклом. Запускаем повторно внутренний цикл с измененным внешним итератором и так далее. Далее сравниваем два списка. Если имеются совпадения по значениям, заносим это значение в третий список. Чтобы эти значения при переборке заново не попадались, удаляем их из двух списков. Таким образом в третьем списке появится группа цифр, которые потом перемножим между собой и получим НОД. По моему замыслу эта группа цифр - не что иное, как делители, на которые делятся оба числа. Загвоздка в том, что код не работает, потому что внешний цикл не видит результаты внутреннего. Значения переменных он берет не те, что поделил внутренний цикл, а те, что были введены с клавиатуры и далее все заново. И логический оператор также становится false, то есть берется значение снаружи. а значит блок между первым и вторым циклом никогда не выполнится. Как быть? Как сделать значения переменных внутреннего цикла "открытыми" для внешнего?