条件不将所有正确的整数附加到正确的列表

时间:2017-10-20 21:04:51

标签: python

我似乎无法找到一种方法将一些倍数包含在我的非素数列表中。例如“15”“49”“9”被认为是素数。任何想法或更正?

number = int(input("Enter a number. "))
non_prime = []
prime = []


def isPrime(number):
    for i in range(2,number):
        if number % i == 0:  
            return False
        else:
           return True

def append(number):
    for i in range(1,number+1):
        if isPrime(i) == True:
            prime.append(i)
        else:
            non_prime.append(i)


append(number)
print(non_prime)
print(prime)
print (len(prime))

1 个答案:

答案 0 :(得分:3)

if number % i == 0:  
   return False
else:
   return True

对于所有奇数,您的函数返回true,因为它检查它们是否可以在'if'子句中除以2,并且由于它们不能除以2,isPrime返回True。您可以执行以下操作:

def isPrime(number):
    for i in range(2,number):
        if number % i == 0:  
            return False
    return True

如果一个数字可以退出for循环,它就不能被任何数字除以它,所以它是一个素数。