【发布时间】:2011-04-02 10:57:02
【问题描述】:
所以我得到了这个 sn-p 的代码。它有效(它说 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,所以订单不计算吗?
(我还在学习布尔值,所以我可能会犯一些基本错误。)
提前致谢!
编辑:感谢您的回答;我从来没有意识到range() 函数的问题。关于代码工作和不工作:我不知道发生了什么。我可能在途中的某个地方犯了一些错误(可能在运行脚本之前忘记保存。虽然我可以发誓它的工作方式不同:P)。也许我只是累了……
无论如何感谢您的回答!
【问题讨论】:
-
如果你想测试
n是否是素数,你只需要检查到n的平方根。 -
如答案所示,循环不运行。您必须更改某些内容才能让您的代码曾经说过 1 不是素数。另外,在找到
n的因子后不要忘记break。
标签: python boolean or-operator