我已经完成了寻找素数的作业,直到找到给定的数为止,然后我将该代码写出作为答案
def count_primes(num):
primes = [2]
x = 3
if num < 2:
return 0
while x <= num:
for y in range(3,x,2):
if x%y == 0:
x += 2
else:
primes.append(x)
x += 2
print(primes)
但是问题是,当我将num写为100时,我得到了以下信息:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 95, 97, 101]
正如我在输出中看到的101一样,我在“第9行”之后添加了break
命令行,这也使我摆脱了95的输出,即:
[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]
那么break
行在此代码中如何将95阻止为素数?
答案 0 :(得分:1)
发生这种情况是因为您从未重置y值。 因此,由于93可被31整除,因此将o x的值增加2。
下一个比较是95%33,它永远不会回到5。
def count_primes(num):
primes = [2]
x = 3
if num < 2:
return 0
while x <= num:
for y in range(3, x, 2):
if x % y == 0:
x += 2
break
else:
primes.append(x)
x += 2
print(primes)