I decided to code the sieve of eratosthenes in ruby for fun. Only for fun because I knew there was a library function. Also, I thought it would be fast. But I found that it is not, at least in my ruby 1.9.3, mine is several times faster on my netbook and it's not even in c. why is that so.
library implementation:
require 'prime'
primes = Prime.each(1_000_000).to_a
print primes.size
puts
mine in ruby:
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
The library is very slow.