The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.
Find the sum of all the primes below two million.
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
[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 )
Strasznie długo się liczy.
Tam powinno byc 2_000_000 i wynik troche inny, ale dziala i to calkiem sprawnie
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