class Primer::Generator
Attributes
n[R]
Public Class Methods
new(n:)
click to toggle source
# File lib/primer/generator.rb, line 5 def initialize(n:) @n = n end
Public Instance Methods
first_primes()
click to toggle source
# File lib/primer/generator.rb, line 9 def first_primes sieve.first(n) end
Private Instance Methods
max_prime()
click to toggle source
# File lib/primer/generator.rb, line 28 def max_prime # Rosser's theorem n * (Math.log(n) + Math.log(Math.log(n))) end
numbers_to_sieve()
click to toggle source
# File lib/primer/generator.rb, line 24 def numbers_to_sieve @numbers ||= Array.new(2, nil) + (2..max_prime).to_a end
sieve()
click to toggle source
# File lib/primer/generator.rb, line 15 def sieve numbers_to_sieve.each do |num| next unless num break if num**2 > max_prime (num**2).step(max_prime, num) { |idx| numbers_to_sieve[idx] = nil } end numbers_to_sieve.compact end