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
-
#[](index)
Returns the
index
th prime number. -
#cache
(also: #primes, #primes_so_far)
Returns the cached prime numbers.
-
#primes
Alias for #cache.
-
#primes_so_far
Alias for #cache.
Instance Method Details
#[](index)
Returns the index
th prime number.
index
is a 0-based index.
# 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.
# File 'lib/prime.rb', line 391
def cache @primes end
#primes
Alias for #cache.
# File 'lib/prime.rb', line 394
alias primes cache
#primes_so_far
Alias for #cache.
# File 'lib/prime.rb', line 395
alias primes_so_far cache