三个正数x,y,z的组合使x + y,x-y,y + z,y-z,x + z和x-z为完美正方形
早上好,我是新来的,我带来一个小问题。我无法为以下问题开发高效的算法: 我需要找到三个正数x,y和z的组合,以便x + y,x-y,y + z,y-z,x + z和x - z是完美的正方形。 问题是要开发一种算法,找到1 和2,000,000之间的x,y和z的所有组合。三个正数x,y,z的组合使x + y,x-y,y + z,y-z,x + z和x-z为完美正方形
目前我在for
之内使用for
,在我有孙子之前,这肯定不会结束。
基本思想开始与取代,如:
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,CS这可能已经是快è nough。
更进一步的想法可能是首先使用Pythagorean triples(通过将其代入m和n,枚举所有coprime(m,n),然后使用Euclid公式来枚举所有b²,c²,b²+c²,然后查找给定的b,c)以类似的方式(例如,将a² - c²=x²更改为a²=x²+c²并再次使用三元组)。
所以我开始寻找最终的X,然后找到答案表达式X + Y是一个完美的正方形(不管结果是在范围内还是与其他结果不同),X - Y是完美的广场。有“X”和“Y”寻找“Z”,和其他表达式实现,直到你找到一个有效的组合和存储或打印。 BeniBela “的基本理念,开始了替代,如: U = X + Y V =说明X - Y W = Y + Z” 似乎是一个好主意,我会尽力与工作。谢谢 – user2156850 2013-03-11 13:56:56
x + y = (x - z) + (y + z)
x + y = (x + z) + (y - z)
所以,三胞胎只有当斜边可以以两种不同的形式来表示有效。 进一步的过滤可以通过观察(x-z)和(x + z)也形成毕达哥拉斯三元组的斜边来完成。
加快孙子们的收购,可能是一个有趣的方式来解决这个问题)+1为好问题 – kostja 2013-03-11 13:04:03
是约束,1
2013-03-11 13:28:07
它可能有助于某些情况下[每个广场是两个连续的三角形数字的总和](http://www.jstor.org/discover/10.2307/3621134?uid=3739728&uid=2&uid=4&uid=3739256&sid=21101806678781 )(尽管这当然不意味着只有三角形数字和平方和)。 – 2013-03-11 13:35:51