这个python代码得到一组2到10之间的素数有什么问题?

2j4z5cfb  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(102)
prime=set()
for i in range(2,10):
    for j in range(2,i):
        if (i%j==0):
            break
        else:
            prime.add(i)
print(prime)
#yields {9,3,5,7},which is concerning....

我改变了范围值,但它没有改变;实际上变得更糟了。
我很清楚,还有其他方法可以获得质数。,只是尽量坚持这种格式,并试图纠正它,如果你可以

oknwwptz

oknwwptz1#

正如其他人评论@Barmar,@Kelly:
可以使用for-else组合。这是python的一个很好的特性。
一旦内部的for loop被耗尽,else子句将被执行。
你同样的代码只是在for的级别上写else

  • 打印到99*
prime=set()
for i in range(2,100):
    for j in range(2,i):
        if (i%j==0):
            break
    else:
        prime.add(i)
print(prime)

#output
{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}

for-else文档

相关问题