def trisum():
divs = 1
great = 1
n = 1
while divs < 500:
divs = 1
n += 1
tri = sum(i for i in range(1,n+1))
#divisors = [tri]
for x in range(1,tri):
if tri%x == 0:
#divisors.append(x)
divs += 1
else:
pass
if divs > great:
great = tri
print(great)
#grVal = sorted(divisors, reverse=True)
#print("{}: {}".format(divs,tri))
print(great)
trisum()
s = input("")
这是我的代码,用于解决可找到500个除数的三角形值,它适用于较小的数字,但是对于500个来说,它花费的时间确实很长,我也无法得到答案。我有90%的代码适用于所有除数,并且我从列表开始只是将变量分配给最大的三角和。
为什么我的代码仍然这么慢?任何帮助将不胜感激,谢谢。
最佳答案
您可以尝试通过简单地添加来减少总和的计算
i = 1
tri = i
while divisors < 100:
tri += i
# do something
i += 1
另外,在寻找除数时不要求三
int(tri / 2)
可以平均除任何数字的最大数字是该数字的一半。 [希望这会有所帮助,因为我正在使用手机,所以无法测试]
关于python - 为什么我的欧拉12号项目的代码这么慢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32280468/