Project Euler Problem 10

問題

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

ソース

max = 2000000
prime = Array.new(max, 1)

prime[0] = 0
prime[1] = 0
i = 2
while i < Math.sqrt(max).to_i + 1 do
	(i + i).step(max, i) do |x|
		prime[x] = 0
	end
	j = prime[(i + 1)..max].index(1)
	break if j.nil?
	i += j + 1
end

sum = 2
3.step(max, 2) {|x|
	sum += x if prime[x] != 0
}

puts sum

解答

142913828922

感想

Problem 7のソース使い回しで。。。
まぁ200万まで篩にかけると時間かかるよなwww
高速化は無理です!(考えたくない・・