2012年4月25日水曜日

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

問題内容

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?
和訳は・・・
13195 の素因数は 5、7、13、29 である。

600851475143 の素因数のうち最大のものを求めよ。

コード

単純に割り切れる値を求めて、その値が自分より小さい素数に含まれていないことをチェックしています。
def primes = []
(2..Math.sqrt(600851475143)).each {
  if (600851475143 % it == 0 && !(primes.find {prime -> it % prime == 0})) {
    primes << it
  }
}
println primes.max()