class Prime::PseudoPrimeGenerator - prime: Ruby Standard Library Documentation

# class 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-0.1.3/lib/prime.rb, line 335
    def initialize(ubound = nil)
      @ubound = ubound
    end

### Public Instance Methods

each() { |prime| ... } click to toggle source

Iterates the given block for each prime number.

    # File prime-0.1.3/lib/prime.rb, line 367
    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-0.1.3/lib/prime.rb, line 355
    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-0.1.3/lib/prime.rb, line 362
    def rewind
      raise NotImplementedError, "need to define `rewind'"
    end

size() click to toggle source

    # File prime-0.1.3/lib/prime.rb, line 402
    def size
      Float::INFINITY
    end

succ() click to toggle source

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

`PseudoPrimeGenerator`#succ raises `NotImplementedError`.

    # File prime-0.1.3/lib/prime.rb, line 350
    def succ
      raise NotImplementedError, "need to define `succ'"
    end

upper_bound() click to toggle source

    # File prime-0.1.3/lib/prime.rb, line 342
    def upper_bound
      @ubound
    end

upper_bound=(ubound) click to toggle source

    # File prime-0.1.3/lib/prime.rb, line 339
    def upper_bound=(ubound)
      @ubound = ubound
    end

with_index(offset = 0) { |prime, offset| ... } click to toggle source

see `Enumerator`#with_index.

    # File prime-0.1.3/lib/prime.rb, line 384
    def with_index(offset = 0, &block)
      return enum_for(:with_index, offset) { Float::INFINITY } unless block
      return each_with_index(&block) if offset == 0

      each do |prime|
        yield prime, offset
        offset += 1
      end
    end

with_object(obj) { |prime, obj| ... } click to toggle source

see `Enumerator`#with_object.

    # File prime-0.1.3/lib/prime.rb, line 395
    def with_object(obj)
      return enum_for(:with_object, obj) { Float::INFINITY } unless block_given?
      each do |prime|
        yield prime, obj
      end
    end