【问题标题】:Why does my program stop working for large values?为什么我的程序停止为大值工作?
【发布时间】:2018-06-18 21:45:47
【问题描述】:

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

“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?你的代码不会像你期望它在 Python 3 中做的那样。
  • 你有一个 6000 亿次迭代的外循环。这不会很快完成。
  • 对不起。当我说它不起作用时,我的意思是说什么都没有发生。该程序无法运行足够大的“复合”值。

标签: python


【解决方案1】:

问题在于这一行的组合:

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
~                

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 2017-07-07
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多