想要一个从我的函数返回的素数列表,但只得到第一个值吗?

2024-03-29 08:05:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下功能:

def prime(number):
    for num in range(1,number):
        if num > 1:
            for i in range (2, num):
                if (num%i == 0):
                    return("not a prime")
            else:
                return(num)

print(prime(9))

Output: 2

请解释我哪里做错了,或者我怎样才能得到任何输入范围内所有素数的列表,例如:-9、100或300。你知道吗


Tags: in功能numberforoutputreturnifdef
1条回答
网友
1楼 · 发布于 2024-03-29 08:05:45

问题是,当到达return语句时,函数执行终止,因此只能得到第一个素数。考虑创建一个列表,在其中添加素数,如下所示:

def prime(number):
    primes = []
    for num in range(1, number + 1):
        if num > 1:
            for i in range (2, num):
                if (num % i == 0):
                    break
            else:
                primes.append(num)
    return primes

这将给出从2到number的素数。我希望这对你有帮助。你知道吗

按照@jpp的建议,您还可以使用yield,如下所示:

def prime(number):
    for num in range(1,number):
        if num > 1:
            for i in range (2, num):
                if (num%i == 0):
                    break
            else:
                yield num

for num in prime(20):
    print(num)

相关问题 更多 >