不修改现有代码如何运行求解600851475143最大质因数的Python脚本
问题解答
不修改现有代码的前提下,不存在能够快速得到600851475143对应输出的编译器或者运行环境。
你当前写的两层嵌套循环时间复杂度为O(n²),输入的目标数值600851475143规模达到6×10¹¹,总运算量超过10²³次,哪怕单条运算仅耗时1纳秒,跑完所有计算也需要上千万亿年,远超过可等待的时间范围,不管用CPython还是PyPy运行都不可能得到结果。
Project Euler第3题对应输入600851475143的正确输出结果为6857。
如果你后续愿意调整代码优化性能,可以参考以下优化方向:
- 寻找因数时不需要遍历到目标数本身,只需要遍历到目标数的平方根即可
- 每找到一个质因数就把原数除以该质因数,缩小后续遍历的数值范围
- 不需要单独写循环判断因数是否为质数,从小到大遍历的情况下,能整除当前剩余数值的数一定是质数
内容的提问来源于stack exchange,提问作者Saurav Sharma
相关产品推荐
相关产品推荐

