나는 eratosthenes의 체를 루비로 코딩하기로 결정했다. 내가 도서관 기능이 있다는 것을 알았 기 때문에 오직 재미로만. 또한 나는 그것이 빠를 것이라고 생각했다. 하지만 적어도 내 루비 1.9.3에서는 내 넷북에서 몇 시간 더 빠르다. 왜 이렇게이다.왜 primes에 대한 stdlib 구현이 느린가?
라이브러리 구현 : 루비
require 'prime'
primes = Prime.each(1_000_000).to_a
print primes.size
puts
내 :
sieve = Array.new(1_000_000, true)
sieve[0..1] = [false, false]
for number in 2...Math.sqrt(sieve.size)
if sieve[number]
for multiple in (number ** 2...sieve.size).step(number)
sieve[multiple] = false
end
end
end
primes = []
for number in 2...1_000_000
if sieve[number]
primes << number
end
end
print primes.size
puts
라이브러리는 매우 느립니다.
2.2로 업그레이드하는 시간이 좀 필요하다고 생각합니다. –
http://stackoverflow.com/questions/17892313/sieve-of-eratosthenes-with- 휠 분해. – LutzL