为什么我的程序停止为大值工作?

时间:2018-06-18 21:45:47

标签: python

您好我写了这个程序以回答以下问题:

" 600851475143号码的最大主要因素是什么?"

该计划适用于"复合"等于13195,但如果我将其设置为600851475143则不起作用。

为什么会这样?

composite = 600851475143
for m in range (2,composite):
    while composite % m == 0:
        if composite / m == 1:
            break
        else:
            composite = composite / m
print(composite)

1 个答案:

答案 0 :(得分:2)

问题是这一行的组合:

for m in range (2,composite):

和这一行:

    composite = composite / m

循环时,范围不会重新计算。有关详细信息,请参阅此问题:Changing the number of iterations in a for loop

相反,您的代码应该是以下内容(以解决该问题):

composite = 600851475143

m = 2
while m < composite:
    while composite % m == 0:
        print(composite, m)
        if composite / m == 1:
            break
        else:
            composite = composite / m
    m += 1
~