gpt4 book ai didi

python - 在python 3中获取素数列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:13 25 4
gpt4 key购买 nike

初学者。我正在尝试返回一个列表,其中包含从 0 到 num 的所有素数。有人可以帮我找出我的代码有什么问题吗?我总是得到一个空列表。多谢! (我使用的是 python 3.6)

def task(num):
num = int(num)
lst = []
if num < 3:
return lst
else:
for i in range(3,num):
if not i & 1:
lst = lst
else:
primetest = range(3, int(i ** 0.5) + 1, 2)
for n in primetest:
if i % n != 0:
lst.append(i)

return lst

task(5)

更新:

谢谢大家的评论!真的很有帮助。

这是我修改后的代码的样子。

def task(num):
num = int(num)
lst = []

if num < 2:
return lst

if num >= 2:
lst.append(2)

for i in range(3, num + 1):
if i % 2 == 1:
switch = True
for n in range(3, int(i ** 0.5) + 1, 2):
if i % n == 0:
switch = False
break
if switch:
lst.append(i)

return lst

最佳答案

主要问题在于你的内部 for 循环:

每次在 primetest 范围内找到一个不是 i.

你可能想在这里使用一个 bool 值来存储你找到了 i 的除数这一事实,然后如果你没有找到它就将它附加到列表中。

要回答您的问题,您的列表是空的,因为 primetest 范围在您的示例中始终为空:

int(3**0.5) + 1 = 3  and   int(5**0.5) + 1 = 3
range(3,3,2) = []

数组是空的,因为范围函数将不包括上限,并且由于内部循环没有做它应该在你的代码中做的事情,结果将是一个空列表,直到任务的参数函数优于或等于9

关于python - 在python 3中获取素数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com