18 October, 2008

[Project Euler] Problem 9

Project EulerのProblem 9。実は簡単に手で解ける問題。

a^2 + b^2 = c^2 を満たす a,b,c は、一般性を失わずに、
a = m^2 - n^2, b= 2mn, c = m^2 + n^2 (m > n)
と書ける事が判っている。
a + b + c = 1000 より、m(m+n) = 500 となる。
500 の約数は、(1,2,4,5,10,20,25,50,100,125,250,500) で、
m+n > m, m > n を使うと、m = 20, n = 5。


object P009 {
def main(args:Array[String]) {
println(new java.util.Date)
val result = for(a <- List.range(1,1000);
b <- List.range(a,1000-a);
c = 1000 - a - b
if a*a + b*b == c*c
) yield (a,b,c,a*b*c)
println(result)
println(new java.util.Date)
}
}

No comments: