gpt4 book ai didi

python - 如何找到每次迭代中获得的最大值并将其附加到列表中

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

给定一个数字n,编写一个程序来查找从n开始的九个连续数字中每个数字的最大质因数之和。

我能够获得因子,但对于每个值,如果有多个素数因子,我只想要这些素数因子中我无法获得的最大值。

def find_g(num):
factor=[]
list1=[]
list2=[]
for i in range(0,num-1):
factor.append(num+i)
print(factor)
for f in factor:
for i in range(2,f+1):
if(f%i==0 and i%2!=0):
list1.append(i)
print(list1)
list2.append(max(list1))
list1=[]

print(list2)

print(find_g(10))

输入:10
所需输出:[5, 11, 3, 13, 7, 5, 17, 9]
实际输出:[5, 11, 3, 13, 7, 3, 5, 15, 17, 3, 9]

最佳答案

您可以将其分为两部分:(A) 找到任何给定数字的最大质因数 n ,以及 (B) 对从 n 开始的九个连续数字中的每一个的最大质因数求和。我将描述每个的代码,然后将它们组合起来。

(A) 我们可以找到一个数 n 的最大质因数, lpf(n) ,使用以下代码:

def lpf(n):
i = 2
while i * i <= n:
if n % i:
i += 1
else:
n //= i
return n

(B) 然后,我们可以对 n 中的每个数字运行此代码至n+9通过映射lpf功能跨越range(n, n+9)并对结果求和:

def find_g(n):
return sum(map(lpf, range(n, n+9)))

对于您的案例n=10 ,我们得到

find_g(10) = 66

这是正确的,因为 [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 的最大素因数分别是 [5, 11, 3, 13, 7, 5, 2、17、3]。

(请注意,您的预期答案不正确,您能找出原因吗?)

关于python - 如何找到每次迭代中获得的最大值并将其附加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795992/

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