Prime::TrialDivision

Public Instance Methods

[](index)click to toggle source

Returns the +index+th prime number.

index is a 0-based index.

# File prime.rb, line 400def[](index)
whileindex>=@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) **2end# 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_checkif@primes[2..@ulticheck_index].find {|prime|@next_to_check%prime==0 }.nil?@next_to_check+=4@primes.push@next_to_checkif@primes[2..@ulticheck_index].find {|prime|@next_to_check%prime==0 }.nil?@next_to_check+=2endreturn@primes[index]
end