Method: Prime#prime?

Defined in:
lib/prime.rb

#prime?(value, generator = Prime::Generator23.new) ⇒ Boolean

Returns true if value is a prime number, else returns false. Integer#prime? is much more performant.

Parameters

value

an arbitrary integer to be checked.

generator

optional. A pseudo-prime generator.

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)

238
239
240
241
242
243
244
245
246
247
# File 'lib/prime.rb', line 238

def prime?(value, generator = Prime::Generator23.new)
  raise ArgumentError, "Expected a prime generator, got #{generator}" unless generator.respond_to? :each
  raise ArgumentError, "Expected an integer, got #{value}" unless value.respond_to?(:integer?) && value.integer?
  return false if value < 2
  generator.each do |num|
    q,r = value.divmod num
    return true if q < num
    return false if r == 0
  end
end