如果给我一个[2, 2, 3, 5, 5]
形式的数的素因子分解,我怎么能找到[1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 25, 30, 50, 60, 75, 100, 150, 300]
形式的所有因子
我曾尝试通过迭代循环来实现这一点,但据我所知,这并不是通过单击一种方法来获得数字,结果是两个以上的数字相乘
def find_factors(pfacts):
pfacts = [1] + pfacts
temp = []
for i in pfacts:
for j in pfacts[i+1:]:
if i * j not in temp:
temp.append(i * j)
return [1] + temp
我知道这不是正确的方法,因为它只能找到一小部分的因素
[1, 2, 3, 5, 6, 10, 15]
一种方法是将
itertools.product
与numpy.prod
和numpy.power
一起使用:输出:
把所有的组合相乘,然后加到一个集合中。你知道吗
其工作原理如下:
您可以使用
itertools.combinations
(这将提供重复项)和set
来过滤重复项:输出:
相关问题 更多 >
编程相关推荐