123456789_123456789_123456789_123456789_123456789_

Class: Prime::TrialDivision

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
self, Singleton
Inherits: Object
Defined in: lib/prime.rb

Overview

Internal use. An implementation of prime table by trial division method.

Instance Method Summary

Instance Method Details

#[](index)

Returns the indexth prime number.

index is a 0-based index.

[ GitHub ]

  
# File 'lib/prime.rb', line 400

def [](index)
  while index >= @primes.length
    # Only check for prime factors up to the square root of the potential primes,
    #   but without the performance hit of an actual square root calculation.
    if @next_to_check + 4 > @ulticheck_next_squared
      @ulticheck_index += 1
      @ulticheck_next_squared = @primes.at(@ulticheck_index + 1) ** 2
    end
    # Only check numbers congruent to one and five, modulo six. All others

    #   are divisible by two or three.  This also allows us to skip checking against
    #   two and three.
    @primes.push @next_to_check if @primes[2..@ulticheck_index].find {|prime| @next_to_check % prime == 0 }.nil?
    @next_to_check += 4
    @primes.push @next_to_check if @primes[2..@ulticheck_index].find {|prime| @next_to_check % prime == 0 }.nil?
    @next_to_check += 2
  end
  @primes[index]
end

#cache Also known as: #primes, #primes_so_far

Returns the cached prime numbers.

[ GitHub ]

  
# File 'lib/prime.rb', line 391

def cache
  @primes
end

#primes

Alias for #cache.

[ GitHub ]

  
# File 'lib/prime.rb', line 394

alias primes cache

#primes_so_far

Alias for #cache.

[ GitHub ]

  
# File 'lib/prime.rb', line 395

alias primes_so_far cache