Минимальный делитель
Вы решили задачу. Теперь можно сравнить подходы.
Достаточно искать делитель до квадратного корня.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Проверка до корня
У составного числа хотя бы один делитель не превосходит √n. Если такой не найден, число простое.
n = int(input())
d = 2
while d * d <= n and n % d != 0:
d += 1
print(d if d * d <= n else n)
Время: O(√n). Память: O(1).
Другой способ: Прямой перебор
Само n обязательно делитель; первый найденный делитель минимален. Метод проще, но медленнее на простых числах.
n = int(input())
d = 2
while n % d != 0:
d += 1
print(d)
Время: O(n). Память: O(1).
На что обратить внимание
- Единицу нельзя считать ответом; для простого числа ответ — само число.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.