如我们所知,对于前三个正整数(a< b< c< c> c),如果它是三角形的三边被称为Pythagorean Triple。
给定整数a。如何快速找到三个毕达哥拉斯的剩余两个。
但是,如果有多个答案,则输出b,c最大。
示例:
输入
9
输出
40 41
(9,12,15),(9,40,41)是2个答案。但是最准确(9,40,41)。
我不知道如何解决优化问题。请帮我。 非常感谢你。
答案 0 :(得分:0)
作为
a² = c²-b²=(c-b)*(c+b)
您可以尝试a²
从最小到最大的因素,因为b
,如果c
最大,b+c
最大,因此c-b
是a
最小。对于奇数c = (a²+1)/2
b = (a²-1)/2
,人们很容易看到
a
给整数带来必需的属性。对于偶数2
,两个因子之和为偶数的最小可行因子为c = (a²+4)/4
b = (a²-4)/4
,导致
ibmiot
这个简单的公式甚至有一个旧名称:The Platonic sequence