找不到正确的素数集

时间:2019-01-27 16:18:00

标签: python-3.x

这是我查找质数的代码-

我无法弄清楚为什么我的输出包含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)

1 个答案:

答案 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):