exercism/ruby/nth-prime/nth_prime.rb

20 lines
343 B
Ruby
Raw Normal View History

2018-03-02 22:27:55 +00:00
class Prime
attr_reader :primes
def self.nth(n)
raise ArgumentError.new('N must be positive') if n < 1
2018-03-09 20:13:37 +00:00
sieve(50 * n)[n - 1]
end
def self.sieve(n)
(2..Math.sqrt(n)).each_with_object([nil, nil, *2..n]) do |p, res|
(p*p).step(n, p) { |m| res[m] = nil }
end.compact
2018-03-02 22:27:55 +00:00
end
end
module BookKeeping
VERSION = 1
end