首页 > 解决方案 > 为什么我的程序停止为大值工作?

问题描述

嗨,我写这个程序是为了回答以下问题:

“数字 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)

标签: python

解决方案


问题是这一行的组合:

for m in range (2,composite):

这行:

    composite = composite / m

循环时范围不会重新计算。有关更多详细信息,请参阅此问题:更改 for 循环中的迭代次数

相反,您的代码应如下所示(以解决该问题):

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
~                

推荐阅读