Python 条件不将所有正确的整数追加到正确的列表
我似乎想不出一种方法来把一些倍数包括在我的非素数列表中。例如,“15”“49”“9”被视为素数。有什么想法或更正吗Python 条件不将所有正确的整数追加到正确的列表,python,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:
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))
您的函数为所有奇数返回true,因为它检查它们是否可以在“if”子句中被2除,并且因为它们不能被2除,isPrime
返回true
。您可以执行以下操作:
def isPrime(number):
for i in range(2,number):
if number % i == 0:
return False
return True
如果一个数字可以退出for循环,那么它不能被它上面的任何数字除,所以它是一个素数
您的函数为所有奇数返回true,因为它检查它们是否可以在“if”子句中被2除,并且因为它们不能被2除,isPrime
返回true
。您可以执行以下操作:
def isPrime(number):
for i in range(2,number):
if number % i == 0:
return False
return True
如果一个数字可以退出for循环,那么它不能被除此之外的任何数字所除,因此它是一个素数。您的
isPrime()
函数需要修改。它只是把奇数和偶数分开。如果你搜索的话,很容易找到寻找素数的算法。这可能有助于isPrime()
函数过早返回True
。您需要调查更多的数字,一旦没有找到除数,您就退出循环并返回True。此外,您不需要调查2
和number
之间所有可能的除数。循环,直到数字的平方根足够大。。。如果当时还没有找到除数,那么就再也找不到它了。您的isPrime()
函数需要修改。它只是把奇数和偶数分开。如果你搜索的话,很容易找到寻找素数的算法。这可能有助于isPrime()
函数过早返回True
。您需要调查更多的数字,一旦没有找到除数,您就退出循环并返回True
。此外,您不需要调查2
和number
之间所有可能的除数。循环,直到数字的平方根足够大。。。如果没有找到除数,那么就不会再找到它了。几乎正确。但是,在1的情况下,您的函数将失败。1不是绝对正确的。我的错误。还有另一个优化:只循环到math.sqrt(number)
而不是number
。如果没有找到一个除数,那么在第二部分中也不会找到它。实际上,您可以返回一个一行:返回number>1和all(范围(2,int(number**0.5)+1)中i的数字%i)
几乎正确。但是,在1的情况下,您的函数将失败。1不是绝对正确的。我的错误。还有另一个优化:只循环到math.sqrt(number)
而不是number
。如果没有找到一个除数,那么在第二部分也不会找到它。实际上,您可以返回一个一行:返回number>1和all(范围(2,int(number**0.5)+1)内的i的数字%i)