【发布时间】:2016-04-12 01:35:06
【问题描述】:
我正在做一个关于三角数的挑战。关键是要找出任意两个三角数之和是否等于输入 n。我让它工作,但显然它需要太长时间,他们想要更快的东西。
我写它的方式是将所有三角数放入一个列表中,然后循环遍历该列表以检查是否有任何一对数字满足条件。我不知道如何使循环更快,并且在这里阅读类似的帖子我不知道如何将其应用于这种情况。
代码如下:
def Triangular(n):
lst = []
for i in range(1, n + 1):
lst.append((i** 2 + i)//2)
yn = False
for i in lst:
for j in lst:
if i*i + j*j == n:
yn = True
break
else:
continue
return yn
【问题讨论】:
-
您可能想在Code Review上提问
-
"关键是要找出任意两个三角数的 sum 是否等于输入 n" - 那为什么你的代码看看平方和?
-
因为我打错了
-
所以我尝试了 Triangular(6),它应该返回 True,但却收到了 false。这里有点困惑>.>
-
Nvm,才发现打错了
标签: python performance loops