最初の素数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(:+)もいいですね。