Module: FasterPrime::Core

Includes:
Enumerable
Included in:
FasterPrime, FasterPrime
Defined in:
lib/faster_prime/base.rb

Defined Under Namespace

Classes: SuccEnumerator

Instance Method Summary collapse

Instance Method Details

#each(ubound = nil, &block) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/faster_prime/base.rb', line 16

def each(ubound = nil, &block)
  return SuccEnumerator.new(Float::INFINITY) do |y|
    Sieve.each(ubound) {|p| y << p }
  end unless block_given?

  Sieve.each(ubound, &block)
end

#int_from_prime_division(pd) ⇒ Object



33
34
35
# File 'lib/faster_prime/base.rb', line 33

def int_from_prime_division(pd)
  pd.inject(1) {|v, (p, e)| v * (p ** e) }
end

#prime?(n) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


24
25
26
27
# File 'lib/faster_prime/base.rb', line 24

def prime?(n)
  raise ArgumentError, "Expected an integer, got #{ n }" unless n.respond_to?(:integer?) && n.integer?
  PrimalityTest.prime?(n)
end

#prime_division(n) ⇒ Object



29
30
31
# File 'lib/faster_prime/base.rb', line 29

def prime_division(n)
  PrimeFactorization.prime_factorization(n).to_a
end