找到x ^ 2 + y ^ 2 = z ^ 2的解的最佳复杂性

时间:2017-11-06 10:19:21

标签: algorithm

在给定范围内找到x²+y²=z²的解?

x,y和z是整数,范围约为[0,10 ^ 6]。

我能做的最好的事情是迭代所有x和所有 y并在散列中存储x²+y²,然后遍历所有可能的z并检查z²是否在散列中。

1 个答案:

答案 0 :(得分:1)

你可以认为只有x是奇数而y是偶数。

  • x和y的解决方案都可以通过注意到:

    来获得

    x = 2x1; y = 2y1; z = 2z1,其中x1,y1和z1也是解决方案

  • 你可以很容易地证明,如果x和y都是奇数,那么x ^ 2 + y ^ 2给出余数2模4,这不是一个完美的正方形。

  • 显然如果(x,y,z)是解,那么(y,x,z)也是一个解决方案

通过这种优化,您可以将x和y的可能性降低4倍,并将z的奇数值降低(低2倍)。