In Files

  • prime.rb

Parent

Included Modules

Prime::PseudoPrimeGenerator

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 243
def initialize(ubound = nil)
  @ubound = ubound
end
            

Public Instance Methods

each() click to toggle source

Iterates the given block for each prime number.

 
               # File prime.rb, line 275
def each
  return self.dup unless block_given?
  if @ubound
    last_value = nil
    loop do
      prime = succ
      break last_value if prime > @ubound
      last_value = yield prime
    end
  else
    loop do
      yield succ
    end
  end
end
            
next() click to toggle source

alias of succ.

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

Rewinds the internal position for enumeration.

See Enumerator#rewind.

 
               # File prime.rb, line 270
def rewind
  raise NotImplementedError, "need to define `rewind'"
end
            
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 258
def succ
  raise NotImplementedError, "need to define `succ'"
end
            
upper_bound() click to toggle source
 
               # File prime.rb, line 250
def upper_bound
  @ubound
end
            
upper_bound=(ubound) click to toggle source
 
               # File prime.rb, line 247
def upper_bound=(ubound)
  @ubound = ubound
end
            
with_object(obj) click to toggle source

see Enumerator#with_object.

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

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 Documenting-ruby.org.