我有以下功能:
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] 删除。
我来说两句