Итак, у меня есть этот фрагмент кода. И это работает (Это говорит 1 не является простым) .:Порядок оценки с использованием булевых или
n = 1
s = 'prime'
for i in range(2, n/2 + 1):
if n == 1 or n % i == 0:
s= 'non-' +s
break
print s
Моя проблема заключается в том, что если я изменяю четвертую строку: if n % i == 0 or n == 1:
, он не работает (он говорит, что 1 является простым.)
Почему? Так как я использую or
, должно ли оно быть одним из них True, поэтому заказ не учитывается?
(я все еще учусь о булево, чтобы я мог делать некоторые основные ошибки.)
Заранее спасибо!
EDIT: Спасибо за ответы; Я никогда не осознавал свою проблему с функцией range()
. А про код работает и не работает: я понятия не имею, что произошло. Возможно, я ошибся где-то по пути (возможно, забыл сохранить, прежде чем запускать скрипт. Хотя я мог бы поклясться, что это сработало по-другому: P). Может быть, я просто устаю ...
Спасибо за ответы в любом случае!
Если вы пытаетесь проверить, является ли 'n' простым, вам нужно только проверить квадратный корень из' n'. – carl
, как указывают ответы, цикл не запускается. Вы, должно быть, что-то изменили для своего кода, который когда-либо говорил, 1 не является простым. Кроме того, не забудьте «ломать», когда вы найдете коэффициент для 'n'. – aaronasterling