提问者:小点点

python代码没有运行。我正在计算一个数的素因子(project euler problem-3)


我试图在pythonPython3.8.232bit中计算一个数字的素因子(当我在代码中传递35时,它的输出应该是7,依此类推)。
但是由于某种原因,程序没有返回任何答案(当我单击run时,cmd没有输出任何内容)。但是当我运行这个javascript时, 完全相同的代码在这里工作。
(以前我有一个数组(列表),我将在其中添加素因子,最后我将弹出最后一个元素,该元素适用于较小的数字,但对于真正大的数字,我将得到一个内存错误,因此我将它转换为只使用一个变量,该变量将在每个while循环中更新)。
这是怎么回事??

我的代码是:

import math
# Computes only prime factors of n
def compute(n):
    arr = 0
    # Checks if n is divisible by 2, and if it is divisible,returns 2 because there will be no any other 
    # prime factor.
    if n % 2 == 0:
        return 2
    # Now that 2 is eliminated we only check for odd numbers upto (square root of n)+1 
    for i in range(1, round(math.sqrt(n)) + 1, 2):
        while n % i == 0:
            arr = n/i
            n /= i

    return str(arr)

print(compute(81))

我是python的新手,所以如果我犯了什么愚蠢的错误,请告诉我。 泰。


共1个答案

匿名用户

例如,如果您想要所有素因子(我猜是这样),您不应该在列表中包含所有素因子之前返回值。

使用这个程序,您只检查一次2。 但是4有2*2。 把它放在一个循环里。