gpt4 book ai didi

python - 从列表中获取素数

转载 作者:行者123 更新时间:2023-12-01 02:31:30 31 4
gpt4 key购买 nike

给定一个列表 lst = [121, 4, 37, 441, 7, 16] ,我想从中删除所有重复的数字,从而产生一个新字符串lst = [37,7](原始字符串的素数)。

到目前为止,我只设法输出了这段代码:

def func(lst,x):
y = []
for i in lst:
for x in range (1, i):
if (i % x) == 0 :
y.append(i)
return y

print(func(lst,3))

我得到的不是lst = [37,7],而是这个看起来很奇怪的列表:

[121, 121, 4, 4, 37, 441, 441, 441, 441, 441, 441, 441, 441, 7, 16, 16, 16, 16]

有什么办法可以让这个工作成功吗?

最佳答案

由于这感觉像是一个家庭作业问题,因此我不会提供工作代码,而是提供策略。您要确保只保留原始列表中的数字,或者过滤掉非质数的数字。

稍微正式一点,“对于列表中的每个数字,确定它是否是素数,如果是,则将其包含在新列表中”。

您的代码已完成 90%,但您的内核(素性测试)不正确。测试素数的关键是确保每个可能的整数除数不能整除所讨论的数字。

例如,如果测试 6,则可能的“0 余数”整数除数列表为

[1, 2, 3, 4, 5, 6]

第一个和最后一个数字(1 和 6)就素数而言没有任何意义(6/1 是 6,6/6 是 1)。因此,您现在要测试的可能除数列表是

[2, 3, 4, 5]

从这里开始,我认为您在代码中缺少的一个见解是,对于一个素数,所有其可能的除数不得产生偶数(即, 0 的余数)

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

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