我试图在pythonPython3.8.2
32bit
中计算一个数字的素因子(当我在代码中传递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的新手,所以如果我犯了什么愚蠢的错误,请告诉我。 泰。
例如,如果您想要所有素因子(我猜是这样),您不应该在列表中包含所有素因子之前返回值。
使用这个程序,您只检查一次2。 但是4有2*2。 把它放在一个循环里。