我正在使用名为projecteuler.net的网站,其中一个问题是:
600851475143的最大主要因素是什么? 所以我写了下面的算法。
def prime(n):
total = []
for p in range(2, n+1):
for i in range(2, p):
if p % i == 0:
break
else:
total.append(p)
return total
def primefactor(x):
mylist = prime(x)
total2 = []
for i in mylist:
if x%i == 0:
total2.append(i)
print max(total2)
适用于较小的数字,但当我输入primefactor(600851475143)
时,它会运行大约半小时,然后冻结我的笔记本电脑。 Euler项目表示,所有问题都需要大约一分钟来计算。任何人都可以告诉我如何使我的代码更有效或更有效的方法?