10以下の素数の和は 2 + 3 + 5 + 7 = 17 である.
200万以下の全ての素数の和を求めよ.
A.
以前作成した素数のジェネレータを使えば簡単。
(第7問を参照)
答えは 142913828922
プログラムは
prime = Enumerator.new do |p|
p<<2
p<<3
primes = [2,3]
#次の素数の候補 n
n = 5
loop do
isprime = true
for i in 1...primes.size()
break if primes[i] * primes[i] > n
if n % primes[i] == 0
isprime = false
break
end
end
if isprime
p << n
primes.push(n)
end
n += 2
end
end
summary=0
while (adder=prime.next ) < 2000000
summary += adder
end
puts summary
無限ループ化したみたい。 うーんarrayじゃないからか?
0 件のコメント:
コメントを投稿