[Project Euler] 来做欧拉项目练习题吧: 题目009
周银辉
问题描述:
A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,
For example, 32 + 42 = 9 + 16 = 25 = 52.
There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.
问题分析:
毕达哥拉斯三元组:三个正整数a,b,c 满足 a^2 + b^2 = c^2
维基一下:http://en.wikipedia.org/wiki/Pythagorean_triple (在维基这方面,国人发现手机网络比家里宽带更能正常显式?)
发现构造毕达哥拉斯三元组的方法有很多(值得注意的是,有些方法是构造“原毕达哥拉斯三元组primitive Pythagorean triple (PPT)”的,由PPT可以构造出其他三元组),其中一种方法是这样的:
由于题目要求 a+b+c = 2*m^2 + 2*m*n = 1000
所以,m^2 + m*n = 500, n=500/m-m
又由于m,n是正整数,那么m^2必定小于500, 也就是说, m<sqrt(500)<23
那么很简单地,枚举并试探m就可以找到正确答案了。