Первые числа либо четные, либо простые.
9 - первое число, где действительно проявляется ошибка в вашем коде.
Ошибка: вы возвращаете «простое», если один тест не прошел. Поскольку 9 % 2
не равно 0, тест здесь не проходит.
перепишите (наивно) как:
for numbers in range(2,x):
if x % numbers == 0:
return "not prime"
return "prime"
, чтобы, если l oop заканчивается без возврата, число будет простым.
Обратите внимание, что есть лучшие и более быстрые способы проверки простоты. Например, не l oop до x-1
, а возводите в квадрат root из x
(включительно), поскольку после этого значения не может существовать делителей.
for numbers in range(2,int(x**0.5)+1):