Problem 10

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.

Tak na szybko:

[code]n,s = 1_000_000, 0
t = []

(2…n).each do |i|
unless t[i]
s += i
(2*i).step(n, i) {|j| t[j] = true }
end
end

s => 37550402023[/code]

Oookej, ostatni i daję szansę innym na forum :wink:

[code=ruby]PRIME_MAX = 2_000_000

def pr10
i = 2
primes = []
loop do
primes << i if (2…Math.sqrt(i).floor).all? {|e| i % e != 0 }
i += 1
break if i >= PRIME_MAX
end

primes.inject(0){|sum, el| sum + el}
end

puts pr10[/code]
(tak, zerżnąłem kod Radarka z problemu 7, bo tu nadawał się idealnie :smiley: )

Strasznie długo się liczy.

Tam powinno byc 2_000_000 i wynik troche inny, ale dziala i to calkiem sprawnie :stuck_out_tongue:

require "prime" p Prime.each(2_000_000).inject(:+)
1.9 bitch! ;]

Huhu, to odkryłeś.

Jak ktoś nie lubi swojego procka to polecam poniższy kod:

p (1..2000000).select {|n| (1..n).select {|i| n % i == 0 }.size == 2}.inject {|sum,x| sum + x} + 1