Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • prime.rb

Parent

Included Modules

Prime::TrialDivision

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

Public Instance Methods

[](index) click to toggle source

Returns the +index+th prime number.

index is a 0-based index.

 
               # File 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
  return @primes[index]
end
            
cache() click to toggle source

Returns the cached prime numbers.

 
               # File prime.rb, line 391
def cache
  return @primes
end
            
Also aliased as: primes, primes_so_far
primes() click to toggle source
Alias for: cache
primes_so_far() click to toggle source
Alias for: cache

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.