我正在尝试开发一种算法,该算法用于查找具有像双色子方程上限的正整数解:
a^3 + b^3 + c^3 = d^3
例如:
3^3 + 4^3 + 5^3 = 6^3
我想用许多方程式折磨您,这些方程式使我们找到了如何找到a,b,c和d的问题的答案。文章的作者雅各布·佩雷尔曼(Jacob Perelman)称其为“三次方的不定方程”,它为我们提供了:
a = 28r^2 + 11rs - 3s^2,
b = 21r^2 - 11rs - 4s^2,
c = 35r^2 + 7rs + 6s^2,
d = -42r^2 - 7rs - 5s^2,
对于任何给定的r和s,例如,给定r = 1且s = 1,我们得到:
a = 36, b = 6, c = 48 d = -54, // reducing by the common factor of 6:
a = 6, b = 1, c = 8, d = 9
因此算法(给定上限b)可能是: 1.取任意r和s,例如r = 1,s = 2 2.执行计算并获得a,b,c,d 3.检查我们是否只有一个负数,如果不继续的话。 4.检查x,y,z,t
出现以下问题:
如果我们更改四个(3,4,5,-6)的初始组的顺序=>(3,5,4,-6),我们将得到新的求解公式:
a = 20r ^ 2 + 10rs-3s ^ 2,
b = 12r ^ 2-10rs-5s ^ 2,
c = 16r ^ 2 + 8rs + 6s ^ 2,
d = -24r ^ 2-8rs-4s ^ 2。
因此,通过这样做,我将获得无限多个新公式。我该如何处理?
GCD计算(尤其是对于4个相当大的数字)非常耗费资源,我应该如何处理?
由于GCD的缘故,即使r和s很大,最终也会产生非常小的a,b,c和d。选择要循环的初始r和s点的策略是什么?
您知道任何更简单的解决方案吗?