擅长:python、mysql、java
<p>range的第二个参数不是inclusive,因此需要执行以下操作:(您可以在此处签出文档:<a href="https://docs.python.org/3/library/stdtypes.html#range" rel="nofollow noreferrer">definition of python range</a>)</p>
<pre><code>for j in range(1, i + 1)
</code></pre>
<p>在数学上有一些改进的机会,例如,你只需要循环到<code>math.sqrt</code>,当你第一次意识到一个数字不是质数时,只要打破它。(仍然不是最优化的,要进一步优化,您可以查看各种优质筛)。在</p>
^{pr2}$
<p>以下是基于@aryamcarthy的一些建议编辑(感谢你提出这个想法!)。它使用特定的python语法-for…else(当循环正常完成而不遇到任何中断时,else子句执行):</p>
<pre><code>import math
def primeNr(interval):
print("Prime numbers from 2 to ", interval)
for i in range(2, interval + 1):
for j in range(2, int(math.sqrt(i)) + 1):
if i % j == 0:
break
else:
print(i)
primeNr(50)
</code></pre>