Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 条件不将所有正确的整数追加到正确的列表_Python - Fatal编程技术网

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

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:

我似乎想不出一种方法来把一些倍数包括在我的非素数列表中。例如,“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))
您的函数为所有奇数返回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)