Sum of Primes

最初の素数1000個の和っていくつ?

設問

Description:

Write a program to determine the sum of the first 1000 prime numbers.
Input sample:

None

Output sample:

Your program should print the sum on stdout.i.e.

3682913

やってみた

が、sum_of_primeがしっくりこない。
管理する数が3つある。。

#!/usr/bin/env ruby

def prime?(n)
  !(2..n/2).any? { |i| (n%i).zero? }
end

def sum_of_primes(n)
  i = 2
  num = 0
  sum = 0
  while num < n
    if prime? i
      sum += i
      num += 1
    end
    i += 1
  end
  sum
end

puts sum_of_primes 1000

2012/01/26追記

RubyでSum of Primesを解く-CodeEval - hp12c


Enumerator.new でなんとかならないかとは思ったんですが
うまく書けませんでした。
summaryするのは別で考えればよかったんですね。

def prime_loop
  i = 2
  Enumerator.new do |y|
    loop { y << i if prime?(i); i += 1 }
  end
end

puts prime_loop.take(1000).inject(:+)

inject(:+)もいいですね。