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)
解决方案
问题是这一行的组合:
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
~
推荐阅读
- c++ - 如何获得特定值的计数 std::map 的 O(log(N)) 复杂度
- javascript - 元素的 style.backgroundColor 不会改变
- python - 为会员添加票务频道 discord.py
- laravel - Laravel Queue 影响 API 函数执行时间
- design-patterns - 单例是设计模式还是反模式?
- python - 制作一个 Python 脚本以从本地存储复制到附加的 eth 存储
- asp.net-core - Asp.net Core SignalR 负载均衡器(关闭连接错误)
- javascript - 忽略特定文件的声明生成
- node.js - 如何同时运行 next.js localhost 和 prisma studio?
- c# - SELENIUM - 如何计算 IList 中的 IWebElement
并获得列表中的位置