gpt4 book ai didi

python - 将数字表示为其因子的乘积

转载 作者:行者123 更新时间:2023-12-01 05:49:04 25 4
gpt4 key购买 nike

我想将一个数字表示为它的因数的乘积。用于表示该数字的因数数量应该从 2 到同一数字的素因数数量(这是最大可能的因数数量)一个数字)。

例如取数字 24:

将数字表示为两个因子相乘的形式有 2*128*36*4 等等... ,

将数字表示为三因数乘法的形式为 2*2*62*3*4 等等...,

将数字表示为四因数乘法(仅质因数)为 2*2*2*3

请帮我找到一些简单且通用的算法

最佳答案

这将生成所有相乘得到原始数字的因子集。它将所有产品集作为排序元组的唯一列表返回。

排除1,以避免无限递归。

def prime_factors(n):    
return set(reduce(list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))

def product_sets(n):
return set(products(1, [], n, prime_factors(n)))



def products(current_product, current_list, aim, factors):

if current_product == aim:
yield tuple(sorted(current_list))

elif 0 < current_product < aim:
for factor in factors:
if factor != 1:
for product in products(current_product * factor, current_list + [factor], aim, factors):
yield product


print list(product_sets(24))

输出:

[(4, 6), (3, 8), (2, 12), (2, 3, 4), (24,), (2, 2, 6), (2, 2, 2, 3)]

关于python - 将数字表示为其因子的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15068698/

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