擅长:python、mysql、java
<p>在<code>isPrime(num)</code></p>
<pre class="lang-py prettyprint-override"><code>def isPrime(num):
if num > 1:
for i in range(2, num):
if(num % i) == 0: # <-- this condition
return True # <-- this return value
</code></pre>
<p>注意<code>if(num % i) == 0:</code>检查<code>num</code>的<em>余数被<code>i</code>除后是否为0,这意味着您要检查<code>i</code>是否可被<code>num</code>除。但是如果这个条件为真,那么<code>num</code>不是素数,所以你必须<code>return False</code>。如果这个条件对于{<cd11>}中的每一个{<cd4>}都是{<cd9>},那么你可以确信{<cd3>}是素数</p>
<p>我想指出的一点是,如果<code>i</code>是<code>num</code>的除数,那么<code>num/i</code>也是一个除数。所以在现实中,您只想检查从<code>2</code>到<code>sqrt(num)</code>或<code>num ** 0.5</code>的范围</p>
<p>建议代码:</p>
<pre class="lang-py prettyprint-override"><code>def isPrime(num):
if num > 1:
for i in range(2, int(num ** 0.5)):
if(num % i) == 0:
return False
reuturn True
else:
return False
</code></pre>
<p>p/s:正如其他人指出的,您不应该在这个项目中真正使用普通素数测试,而是使用<a href="https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes" rel="nofollow noreferrer">Sieve of Eratosthenes</a></p>