【发布时间】:2020-05-12 15:00:47
【问题描述】:
如果它等于输入,则以下代码打印毕达哥拉斯三元组,但问题是像 90,000 这样的大数需要很长时间才能回答。 我可以做些什么来优化以下代码? 1 ≤ n ≤ 90 000
def pythagoreanTriplet(n):
# Considering triplets in
# sorted order. The value
# of first element in sorted
# triplet can be at-most n/3.
for i in range(1, int(n / 3) + 1):
# The value of second element
# must be less than equal to n/2
for j in range(i + 1,
int(n / 2) + 1):
k = n - i - j
if (i * i + j * j == k * k):
print(i, ", ", j, ", ",
k, sep="")
return
print("Impossible")
# Driver Code
vorodi = int(input())
pythagoreanTriplet(vorodi)
【问题讨论】:
-
如果我运行此代码并输入
90000,它会立即打印Impossible并退出。 -
你从这个页面复制/粘贴了你的代码:geeksforgeeks.org/pythagorean-triplet-given-sum——它有很好的解释,你为什么不看一下??
-
查看this
-
代码已修改
-
上述代码运行良好,但在输入较大的数字时运行缓慢,例如 90,000。如何更改此代码以使其更快?
标签: python pythagorean triplet