【发布时间】:2021-07-18 08:55:05
【问题描述】:
我正在解决关于 Project Euler(最大素因子)的第三个问题,并且我是 Python 3 的初学者。
这是我想出的解决方案,它有效,但不适用于非常大的数字
x=int(input("Enter a number:"))
a=[]
for i in range(1,x+1):
cnt=0
if x%i==0:
for j in range(1,i+1):
if i%j==0:
cnt=cnt+1
if cnt==2:
a.append(i)
print(a[len(a)-1])
我了解它非常基本,运行大输入时速度太慢,但是编译器有什么办法可以为我提供此输入的输出 - 600851475143。我尝试使用 pypy3,它也花费了太长时间。
这是我第一次使用 stackoverflow,所以如果我做错了什么,请告诉我。
【问题讨论】:
-
如果代码有缺陷,你真的不能指望在不更改代码的情况下将其删除。你不能神奇地让慢代码运行得更快;你真的需要想出一个资源密集度较低的算法。
-
究竟为什么要添加“不更改代码”作为您的问题的要求?这是您的代码,如果它没有按照您的意愿执行,您需要进行更改。
-
想象你有一辆手推车,然后你问,有什么我可以在路上做的,这样我就可以在不更换自行车的情况下以 70 英里/小时的速度骑行吗?答案是您不仅需要更换自行车,还需要另一种车辆。
-
感谢您的回复,我很抱歉添加了该内容。我知道我必须学习新的算法/方法,以便我的代码更有效、更快。我假设你以前遇到过这样的问题,所以你能否建议我应该开始学习/练习什么主题,以便我可以用不同的方法开始解决类似的问题。
标签: python-3.x prime-factoring