Project Euler Problem 10
module Enumerable def sum inject(0) {|a, n| a + n } end end def sieve(upper) table = Array.new(upper + 1, false) (2 .. upper).inject([]) do |primes, guess| unless table[guess] primes << guess (guess * 2).step(upper, guess) {|n| table[n] = true } end primes end end p sieve(10).sum p sieve(2_000_000).sum