在给定范围内找到x²+y²=z²的解?
x,y和z是整数,范围约为[0,10 ^ 6]。
我能做的最好的事情是迭代所有x和所有 y并在散列中存储x²+y²,然后遍历所有可能的z并检查z²是否在散列中。
答案 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倍)。