擅长:python、mysql、java
<p>这部分是错误的:</p>
<pre><code> for j in range(2, int(num**0.5)+1):
if num%j != 0:
sum1 = sum1 + num
</code></pre>
<p>您正在对未划分的范围内的每个数字进行<code>num</code>求和。
如果所有的数都没有被除,你就应该求和。</p>
<p>简单的方法是:</p>
<pre><code> prime = True
for j in range(2, int(num**0.5)+1):
if num%j == 0:
prime = False
break
if prime:
sum1 = sum1 + num
</code></pre>
<p>或者以一种更像Python的方式使用<code>all()</code>:</p>
<pre><code> if all(num%j != 0 for j in range(2, int(num**0.5)+1)):
sum1 = sum1 + num
</code></pre>