Пожалуйста, исправьте приведенный выше код, чтобы напечатать правильный вывод.
Я считаю, что ниже приведена и упрощенная, и исправленная версия вашего кода:
number = int(input('Enter a number greater than 1: '))
if number > 1:
for divisor in range(2, int(number ** 0.5) + 1):
if number % divisor == 0:
print('Not a prime number.')
break
else: # no break
print('Prime number.')
else:
print('Not a prime number.')
Этот код работает, но не является оптимальным.Одна простая оптимизация состояла бы в том, чтобы обрабатывать 2 / даже в качестве особого случая и делить только на нечетные числа, начиная с 3. Значительная оптимизация состояла бы в том, чтобы переключиться на метод сита, как предлагает @ user448810.
Код, который вы предоставилитестирует только одно число на каждый ввод пользователя.Если вы хотите преобразовать его в цикл, который проверяет диапазон чисел, скажем, все числа больше 2, но меньше 501, то мы можем сделать:
for number in range(3, 501):
if number > 1:
for divisor in range(2, int(number ** 0.5) + 1):
if number % divisor == 0:
print(number, 'is not a prime number.')
break
else: # no break
print(number, 'is a prime number.')
else:
print(number, 'is not a prime number.')