Class: Prime::PseudoPrimeGenerator
- Inherits:
-
Object
- Object
- Prime::PseudoPrimeGenerator
- Includes:
- Enumerable
- Defined in:
- lib/prime.rb
Overview
An abstract class for enumerating pseudo-prime numbers.
Concrete subclasses should override succ, next, rewind.
Instance Method Summary (collapse)
-
- (Object) each
Iterates the given block for each prime numbers.
-
- (PseudoPrimeGenerator) initialize(ubound = nil)
constructor
A new instance of PseudoPrimeGenerator.
-
- (Object) next
alias of succ.
-
- (Object) rewind
Rewinds the internal position for enumeration.
-
- (Object) succ
returns the next pseudo-prime number, and move the internal position forward.
- - (Object) upper_bound
- - (Object) upper_bound=(ubound)
-
- (Object) with_object(obj)
see Enumerator#with_object.
Methods included from Enumerable
Constructor Details
- (PseudoPrimeGenerator) initialize(ubound = nil)
A new instance of PseudoPrimeGenerator
223 224 225 |
# File 'lib/prime.rb', line 223 def initialize(ubound = nil) @ubound = ubound end |
Instance Method Details
- (Object) each
Iterates the given block for each prime numbers.
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/prime.rb', line 255 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 |
- (Object) next
alias of succ.
243 244 245 |
# File 'lib/prime.rb', line 243 def next raise NotImplementedError, "need to define `next'" end |
- (Object) rewind
Rewinds the internal position for enumeration.
See Enumerator#rewind.
250 251 252 |
# File 'lib/prime.rb', line 250 def rewind raise NotImplementedError, "need to define `rewind'" end |
- (Object) succ
returns the next pseudo-prime number, and move the internal position forward.
PseudoPrimeGenerator#succ raises NotImplementedError.
238 239 240 |
# File 'lib/prime.rb', line 238 def succ raise NotImplementedError, "need to define `succ'" end |
- (Object) upper_bound
230 231 232 |
# File 'lib/prime.rb', line 230 def upper_bound @ubound end |
- (Object) upper_bound=(ubound)
227 228 229 |
# File 'lib/prime.rb', line 227 def upper_bound=(ubound) @ubound = ubound end |
- (Object) with_object(obj)
see Enumerator#with_object.
275 276 277 278 279 280 |
# File 'lib/prime.rb', line 275 def with_object(obj) return enum_for(:with_object) unless block_given? each do |prime| yield prime, obj end end |