我正在尝试在 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)
代码运行正常,除了它还在打印 4.请指出代码逻辑是否有问题(忽略效率问题)。
最佳答案
print(2)
for i in range(3,51):
flag=0
for j in range(2,int(i/2)):
if(i%j==0):
flag=1
if(flag==0):
print(i)
当 i = 4 时,范围将为 range(2,2) 即 0。它不会进入 if(i%j == 0): block 。因此,当 i = 4 时,您的标志将始终为 0。
解决它的一种方法是在 i 是否为 4 时添加一个检查。
if(flag==0 and i != 4):
编辑:正如其他人评论的那样,将范围增加 1 比检查值是否为 4 更好。
for j in range(2,int(i/2)+1)
关于python - 在 python 中打印质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50905462/