gpt4 book ai didi

python - 更新列表以包含另一个列表的新元素(质因数计算)

转载 作者:太空宇宙 更新时间:2023-11-04 09:02:01 24 4
gpt4 key购买 nike

我正在计算列表 numbers 中包含的所有数字的质因数。它们作为列表从我的辅助方法 primefactors_of_number 返回。我想跟踪所有这些因素(例如,在列表 all_factors 中并确保它们的数量正确)。

例如,对于输入

[12,16,17]

find_all_primefactors 应该返回

[2,2,3,2,2,17] 

以任何顺序。

让我遇到问题的一点是将 all_factors 更新为仅四次包含 2。

到目前为止,这是我的代码:

def find_all_primefactors(list_with_numbers):
prime_factors = []
all_factors = []
for number in list_with_numbers:
prime_factors = primefactors_of_number(number)
# missing part:
# Update all_factors in a way that it contains all elements of prime_factors at least in the same quantity

return all_factors

def primefactors_of_number(number):
'''
Returns all primefactors of the specified number as a list
'''
i=2
prime_factors=[]
while i<=number:
while number%i==0:
prime_factors.append(i)
number/=i
i+=1
return prime_factors

我想我可以用很多循环和临时值来解决这个问题,但我认为可能有更优雅的解决方案。

最佳答案

另一种方法是首先计算数字列表的最小公倍数,然后分解该单个数字:

from fractions import gcd

def find_all_primefactors(list_with_numbers):
lcm = reduce(lambda a, b: a * b / gcd(a, b), list_with_numbers)
return primefactors_of_number(lcm)

关于python - 更新列表以包含另一个列表的新元素(质因数计算),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24341713/

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