Miller–Rabin primality test: Difference between revisions

Line 1,070:
 
require "big"
require "random"
 
module Primes
Line 1,075 ⟶ 1,076:
 
# Returns true if +self+ is a prime number, else returns false.
def primemr?(k = 10)
primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47}
return primes.includes? self if self <= primes.last
Line 1,082 ⟶ 1,083:
# Choose input witness bases: wits = [range, [wit_bases]] or nil
wits = WITNESS_RANGES.find { |range, wits| range > self }
witnesses = wits && wits[1] || primesk.times.map{ 2 + rand(self - 4) }
miller_rabin_test(witnesses)
end
Anonymous user