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

use*_*850 5 algorithm recursion perfect-square

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

目前我使用的是for一个for肯定不会在我有孙子孙女之前结束的.

Ben*_*ela 4

从替换开始的基本思想,例如:

\n\n
 u = x + y\n v = x - y\n w = y + z\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后 x + y、x - y、y + z、y - z、x + z 和 x - z 变为

\n\n
 u, v, w, u - v - w, v + w, u - w   [all have to be squares]\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
 a\xc2\xb2, b\xc2\xb2, c\xc2\xb2, a\xc2\xb2 - b\xc2\xb2 - c\xc2\xb2, b\xc2\xb2 + c\xc2\xb2, a\xc2\xb2 - c\xc2\xb2    [all have to be squares]\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在你可以枚举所有 a、b、c,这可能已经足够快了。

\n\n

进一步的想法可能是首先使用勾股三元数枚举所有 b\xc2\xb2、c\xc2\xb2、b\xc2\xb2+c\xc2\xb2 枚举所有 b\xc2\xb2、c\xc2\xb2、b\xc2\xb2+c\xc2\xb2 (通过将其替换为 m 和 n,枚举所有互质 (m,n )然后使用欧几里得公式),然后以类似的方式找到给定的(b,c)as(例如将a\xc2\xb2 - c\xc2\xb2 = x\xc2\xb2 更改为a\xc2\xb2 = x\xc2\xb2 + c\xc2\xb2 并再次使用三元组)。

\n