三个正数x,y,z的组合使得x + y,x-y,y + z,y-z,x + z和x-z是完美的正方形

时间:2013-03-11 13:01:21

标签: algorithm recursion perfect-square

早上好,我是新来的,我带来一个小问题。我无法为以下问题开发有效的算法: 我需要找到三个正数x,y和z的组合,以便x + y,x - y,y + z,y - z,x + z和x - z是完美的正方形。 问题是开发一种算法,找到1,x和y之间的所有组合 和2,000,000。

目前我在for内使用for,在我有孙子孙女之前肯定不会结束。

2 个答案:

答案 0 :(得分:4)

以替换开头的基本思路,如:

 u = x + y
 v = x - y
 w = y + z

然后x + y,x - y,y + z,y - z,x + z和x - z成为

 u, v, w, u - v - w, v + w, u - w   [all have to be squares]

然后用另一个替换,u =a²,v =b²,w =c²,你得到:

 a², b², c², a² - b² - c², b² + c², a² - c²    [all have to be squares]

现在你可以枚举所有可能已经足够快的a,b,c-s。

进一步的想法可能是首先使用Pythagorean triples枚举所有b²,c²,b²+c²(通过将其替换为m和n,枚举所有互质(m,n)然后使用Euclid公式)然后找到对于给定的(b,c),以类似的方式(例如,将a²-c²=x²改为a = =x²+c²并再次使用三元组)。

答案 1 :(得分:0)

扩展BeniBela's answer

x + y = (x - z) + (y + z)
x + y = (x + z) + (y - z)

因此,只有当斜边可以用两种不同的形式表示时,三元组才有效。 可以通过观察(x - z)和(x + z)也形成毕达哥拉斯三重态的斜边来进行进一步的滤波。