擅长:python、mysql、java
<p>您没有检查<code>n</code>是否可被2和<code>n</code>之间的所有数字整除,因为在这两种情况下,您都会在第一次iteretion之后退出内部for循环(当<code>n</code>可被<code>x</code>整除时,以及当它不可整除时)。你知道吗</p>
<p>要修复它,需要将<code>else</code>块移到外循环(因此它只在不退出循环时运行,这意味着<code>n</code>是prime),并且只在<code>n</code>不是prime时中断。你知道吗</p>
<pre><code>low = input("Give the lower bound of the number range: ")
high = input("Give the upper bound of the number range: ")
low = int(low)
high = int(high)
for n in range(low,high):
if n<2:
print (n, "cannot be prime.")
for n in range(low,high):
for x in range (2, n):
if n % x == 0: # is n divisible with x? If yes, not a prime
y = n//x*x
print(n, "is not a prime, because", x, "*", n//x, "=", y)
break #this breaks the inner loop, and we continue with the outer!
else:
print(n, "is a prime.")
</code></pre>