from math import isqrtИмпортирует целый квадратный корень из стандартного модуля math.
Числовые алгоритмы строятся из небольшого набора кирпичей: %, //, цикла и аккуратной границы перебора.
Числовые алгоритмы строятся из небольшого набора кирпичей: %, //, цикла и аккуратной границы перебора.
Числовые алгоритмы строятся на точном домене: какие числа допустимы, как определяется ответ для 0 и 1, где заканчивается перебор.
Цифры. Для неотрицательного n: n % 10 берёт последнюю цифру, n // 10 удаляет её.
НОД. Евклид заменяет (a, b) на (b, a % b), пока b не станет 0.
Делитель. d — делитель n, если n % d == 0.
Квадратный корень. Если n составно, у него есть делитель не больше sqrt(n).
Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.
Для проверки простоты числа n достаточно искать делитель от 2 до isqrt(n) включительно. math.isqrt возвращает целую часть квадратного корня без погрешности float. Числа 0 и 1 не простые; это должно быть явно отражено до цикла. Алгоритм Евклида обычно предполагает неотрицательные аргументы, а знак результата НОД договорённо делают неотрицательным.
from math import isqrtИмпортирует целый квадратный корень из стандартного модуля math.
isqrt(n)Возвращает floor(sqrt(n)) для неотрицательного n.
range(2, isqrt(n) + 1)Включает целую границу проверки делителей.
%Проверяет отсутствие остатка при делении.
while b: a, b = b, a % bКомпактная форма алгоритма Евклида для НОД.
int(input())Читает целое число.
printВыводит ответ или логическую метку.