Поскольку ваша программа никогда не входит в цикл.
for d in range(2, n):
if n % d == 0:
return False # Is not prime
return True
начинается с 2 до n-1
. Кроме того, вы должны сделать отступ по-другому. Только после того, как ваша программа вышла из цикла, вы должны return True
:
for d in range(2, n):
if n % d == 0:
return False # Is not prime
return True
Но если вы хотите оптимизировать свою функцию, она должна выглядеть следующим образом:
def is_prime_v1(n):
if n <= 1:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for d in range(3, round(n**0.5) + 1, 2):
if n % d == 0:
return False
return True
Поскольку вам не нужнопроверить до самого числа, только это квадратный корень. Кроме того, ни одно число, которое даже не может быть простым (кроме 2), поскольку оно будет делиться на два.
РЕДАКТИРОВАТЬ:
Я рад, что мой ответ помог:)