class Multipri::Prime

Public Class Methods

new(size=10) click to toggle source
# File lib/multipri/prime.rb, line 5
def initialize(size=10)
  @size = size
end

Public Instance Methods

each() { |n| ... } click to toggle source
# File lib/multipri/prime.rb, line 9
def each
  return enum_for(:each) unless block_given?
  # Taken from https://rosettacode.org/wiki/Sieve_of_Eratosthenes
  nums = [nil, nil, *2..@size]
  (2..Math.sqrt(@size)).each do |i|
    (i**2..@size).step(i){|m| nums[m] = nil}  if nums[i]
  end
  nums.compact.each { |n| yield n }
end