提高除数查找功能的性能

问题描述 投票:0回答:2

我制作了一个函数,该函数可以找到所有运行得很快的除数,但是对于我要执行的操作,我希望它运行得更快。我还已经创建了primeFactors函数。我正在做的是找到所有可能产生的力量,并将它们相乘。

from functools import reduce
from itertools import product

def divisors(n):
    x = sorted(primeFactors(n))
    r = []
    for values in set(x):
        t = list(range(0, x.count(values) + 1))
        r.append(t)
    comb = list(product(*r))
    divisors = []
    for sets in comb:
        n = [a**b for a, b in zip(set(x), sets)]
        divisors.append(reduce(lambda x, y: x*y, n))
    return sorted(divisors)

是否有另一种更快的方法,或者可以对此代码进行任何改进以使其更快?为了解决这个问题,让我们假设我的primeFactors是世界上最快的。

我制作了一个函数,该函数可以找到所有运行得很快的除数,但是对于我要执行的操作,我希望它运行得更快。我还已经创建了primeFactors函数。我在做什么是...

python python-3.x algorithm performance
2个回答
1
投票

有很多方法可以使您的功能获得较小的效率提高:


0
投票

[几乎是@ kaya3解决方案的三倍,大约是您原始解决方案的13倍(在kaya3的示例号3333960000上:]

© www.soinside.com 2019 - 2024. All rights reserved.