【发布时间】:2018-11-27 01:31:04
【问题描述】:
我正在尝试在 python 中打印 3-50 范围内的素数。代码如下:
for i in range(3,51):
flag=0
for j in range(3,i):
if(i%j==0):
flag=1
if(flag==0):
print(i)
代码运行正常,除了 THAT IS ALSO PRINTING 4. 请告知代码逻辑是否有问题(忽略效率问题)。
【问题讨论】:
-
对于
i=4,您在(2,2)范围内运行j,这是一个空范围。如果你把端点加一,你会发现一个因数。 -
按照@khelwood 的建议,将
for j in range(2,int(i/2))行更改为for j in range(2,int(i/2)+1)它应该可以工作 -
请检查编辑后的版本,它仍然给我 4 作为输出
-
我说增加端点。我没有说增加起点。如果你从 3 开始你的范围,你仍然错过了 2。
-
如果我从 3 开始 j 有什么问题?请参考之前错误发布的代码编辑版本...