想要一个从我的函数返回的质数列表但只获得第一个值?

萨米尔·库马尔·潘迪

我有以下功能:

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))

输出:2

请解释我在哪里做错了,或者我如何获得任何输入范围内的所有素数的列表,例如:-9 或 100 或 300。

米格尔瓦尔加斯夫

问题是当你到达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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章