2012年5月4日金曜日

Project Euler-Problem6をgroovyで解いてみる

問題

最初の10個の自然数について、その和の二乗と、二乗数の和は以下の通り。

1² + 2² + ... + 10² = 385
(1 + 2 + ... + 10)² = 3025
これらの数の差は 3025 - 385 = 2640 となる。

同様にして、最初の100個の自然数について和の二乗と二乗の和の差を求めよ。

問題を解いたプログラム

ありきたりな感じに、1から100までの和の二乗と、1から100までのそれぞれの二乗の和を求めてから差をもとめてるだけ。
def ret = (long) Math.pow((1..100).sum(), 2) - (1..100).inject(0) {n1, n2 -> n1 + (int) Math.pow(n2, 2) }
println "ret = $ret"