如何创造更快的毕达哥拉斯三重奏?

时间:2017-02-03 19:11:24

标签: algorithm math

如我们所知,对于前三个正整数(a< b< c< c> c),如果它是三角形的三边被称为Pythagorean Triple。

给定整数a。如何快速找到三个毕达哥拉斯的剩余两个。

但是,如果有多个答案,则输出b,c最大。

示例

输入

9

输出

40 41

(9,12,15),(9,40,41)是2个答案。但是最准确(9,40,41)。

我不知道如何解决优化问题。请帮我。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

作为

a² = c²-b²=(c-b)*(c+b)

您可以尝试从最小到最大的因素,因为b,如果c最大,b+c最大,因此c-ba最小。对于奇数c = (a²+1)/2 b = (a²-1)/2 ,人们很容易看到

a

给整数带来必需的属性。对于偶数2,两个因子之和为偶数的最小可行因子为c = (a²+4)/4 b = (a²-4)/4 ,导致

ibmiot

这个简单的公式甚至有一个旧名称:The Platonic sequence