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%的代码适用于每个除数,我从列表中选择一个变量到最大三角形总和。
为什么我的代码仍然这么慢?非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
您可以尝试通过简单地添加
来减少总和的计算i = 1
tri = i
while divisors < 100:
tri += i
# do something
i += 1
另外,找到除数时不要去三,
int(tri / 2)
作为可以均匀划分任何数字的最大数字是数字的一半。 [希望这会有所帮助,我无法测试,因为我正在使用我的手机]