Maintenance of Ruby 2.0.0 ended on February 24, 2016. Read more

In Files

  • prime.rb


Included Modules


An abstract class for enumerating pseudo-prime numbers.

Concrete subclasses should override succ, next, rewind.

Public Class Methods

new(ubound = nil) click to toggle source
               # File prime.rb, line 244
def initialize(ubound = nil)
  @ubound = ubound

Public Instance Methods

each(&block) click to toggle source

Iterates the given block for each prime numbers.

               # File prime.rb, line 276
def each(&block)
  return self.dup unless block
  if @ubound
    last_value = nil
    loop do
      prime = succ
      break last_value if prime > @ubound
      last_value =
    loop do
next() click to toggle source

alias of succ.

               # File prime.rb, line 264
def next
  raise NotImplementedError, "need to define `next'"
rewind() click to toggle source

Rewinds the internal position for enumeration.

See Enumerator#rewind.

               # File prime.rb, line 271
def rewind
  raise NotImplementedError, "need to define `rewind'"
succ() click to toggle source

returns the next pseudo-prime number, and move the internal position forward.

PseudoPrimeGenerator#succ raises NotImplementedError.

               # File prime.rb, line 259
def succ
  raise NotImplementedError, "need to define `succ'"
upper_bound() click to toggle source
               # File prime.rb, line 251
def upper_bound
upper_bound=(ubound) click to toggle source
               # File prime.rb, line 248
def upper_bound=(ubound)
  @ubound = ubound
with_object(obj) click to toggle source

see Enumerator#with_object.

               # File prime.rb, line 296
def with_object(obj)
  return enum_for(:with_object) unless block_given?
  each do |prime|
    yield prime, obj

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit