从 Python 中的质因数列表创建所有可能的因式分解

Create all possible factorisations from a prime factor list in Python

虽然我看过关于寻找质因数和除数的帖子,但我还没有在 Python 中找到关于因式分解的问题的答案。我有一个质因数列表,即 24[2,2,2,3]。我想从这个列表中得到所有可能的因式分解,即对于 24,输出应该是 [[2,12], [3,8], [4,6], [2,2,6], [2,3,4], [2,2,2,3]]。 我尝试了 itertool 方法,但这会产生很多重复的答案并忘记其他答案(比如找到 [2,3,4] 但忽略 [4,6])。

我对使用生成的素因子列表的方法特别感兴趣。我找到了使用递归函数的解决方法。

def factors(n, n_list):                 
    for i in range(2, 1 + int(n ** .5)):
        if n % i == 0:
            n_list.append([i, n // i])
            if n // i not in primes:  #primes is a list containing prime numbers
                for items in factors(n // i, []):
                    n_list.append(sorted([i] + items))
    fac_list = [[n]]                  #[n] has to be added manually
    for facs in n_list:               #removes double entries     
        if facs not in fac_list:
            fac_list.append(facs)
    return fac_list

但这对于大 n 来说很耗时,因为它必须查看所有数字,而不仅仅是素数。主要因素列表的组合方法应该更快。

编辑:在浏览了几个资源之后,对一个好策略的最好解释是评分最高的答案。简洁且易于在任何语言中实现,一个人喜欢。结案。

你的任务是确定multiplicative partition of a number. Google should point you where you need to go. Stack Overflow already has an answer