Python中的Coprime Factorization

时间:2013-09-29 21:02:55

标签: python

我必须编写一个代码来查找输入数字的两个最高的co prime因子,10 ^ num。

现在,我写道:

def coprimes(num):
    for x in range (2, num):
        for y in range (2, num):
            while (gcd(x,y) == 1) & (x != y):
                if (x*y==num):
                    return (x,y)

由于forloops,这显然是一个非常慢的程序。每当我将它输入终端时,产生答案的速度太慢。我也不确定这是否正确。您对我如何改进此方法有任何建议吗?

这种方法的一个例子应该是:

>>> coprimes(10)
(9765625, 1024)

1 个答案:

答案 0 :(得分:2)

你想要

return 2**num, 5**num

请注意,问题定义不明确 - 不清楚2**num, 5**num是否应被视为高于1, 10**num。但是,这些因素都高于其他因素。

要得出这个答案,请注意,最多1个因子可以被2整除,并且最多1个因子可以被5整除。如果一个因子可被2和5整除,则另一个必须如果一个因子可以被2整除,另一个因子被5整除,我们选择2和5的最高幂可能。 (2或5除以数字的选项产生较低的因子。)