这是我查找质数的代码-
我无法弄清楚为什么我的输出包含33,55,77和99
任何人都可以帮助识别我的代码中的错误。我正在使用木星笔记本。我的代码如下
max1 = int(input("find primes up to what number?:" ))
prime1=[]
for x in range (2,(max1+1)):
isprime = True
for i in range (2,int(max1**.50)+1):
if x%i==0:
isprime=False
break
if isprime:
if x not in prime1:
prime1.append(x)
print(prime1)
答案 0 :(得分:0)
运行我的解释器中的代码,它认为任何奇数都是质数,这是因为您的if isprime:
位于第二个for循环内,并且包含break
。因为您的for循环从2开始,所以在验证了数字2之后(也就是在验证它是否为偶数之后又称为AKA),如果不是,则代码会将其归类为质数,中断第二个for循环,然后跳转到下一个数字。要解决此问题,您要做的就是将if isprime:
放在for循环之后运行,就像这样:
prime1=[]
for x in range (2,(max1+1)):
isprime = True
for i in range (2,int(max1**.50)+1):
if x%i==0:
isprime=False
break
if isprime:
if x not in prime1:
prime1.append(x)
print(prime1)
也:略加注意:在for i in range (2,int(max1**.50)+1):
中,您要验证它直到最大数的平方根,然后才可以将其验证为数字本身的平方根,例如for i in range (2,int(x**.50)+1):