Sha256: 1ae35e411a7d72e9ae999358b23fa8ec5919c011b8bab6d1f6bade6470a004f4

Contents?: true

Size: 581 Bytes

Versions: 9

Compression:

Stored size: 581 Bytes

Contents

require 'prime'
class Integer
  def primorial?
    return true if self == 1
    pd = prime_division
    (pd.map{|b,e| e}.uniq == [1]) and (pd.map{|b,e| b} == Prime.first(pd.size))
  end

  def primorial_product?
    return true if primorial?
    return false if prime?
    divisors.each_slice(2).
             reject{|pair| pair == [1, self]}.
             any?{|pair| pair.all?(&:primorial_product?)} 
  end

  def primorial
    return nil if self < 1
    return 1 if self == 1
    if prime?
      self * (self - 1).primorial
    else
      (self - 1).primorial
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
numb-0.99.0 lib/numb/primorial.rb
numb-0.96.0 lib/numb/primorial.rb
numb-0.89.0 lib/numb/primorial.rb
numb-0.84.0 lib/numb/primorial.rb
numb-0.77.0 lib/numb/primorial.rb
numb-0.72.1 lib/numb/primorial.rb
numb-0.72.0 lib/numb/primorial.rb
numb-0.68.0 lib/numb/primorial.rb
numb-0.63.0 lib/numb/primorial.rb