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

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

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

oknwwptz

oknwwptz1#

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

  • 打印到99*
  1. prime=set()
  2. for i in range(2,100):
  3. for j in range(2,i):
  4. if (i%j==0):
  5. break
  6. else:
  7. prime.add(i)
  8. print(prime)
  9. #output
  10. {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文档

展开查看全部

相关问题