Module: GeneralUnits::Arithmetics

Defined in:
lib/general_units/arithmetics/methods.rb

Class Method Summary collapse

Class Method Details

.three_factors_of(number) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/general_units/arithmetics/methods.rb', line 17

def self.three_factors_of(number)
  export = []
  two_factors_of(number).each do |factors|
    two_factors_of(factors[1]).each do |next_factors|
      export << [factors[0]] + next_factors
    end
  end
  export
end

.two_factors_of(number) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/general_units/arithmetics/methods.rb', line 4

def self.two_factors_of(number)
  if (number = number.to_i) && (number > 1)
    primes, powers = number.prime_division.transpose
    exponents = powers.map {|i| (0..i).to_a}
    divisors = exponents.shift.product(*exponents).map do |powers|
      primes.zip(powers).map {|prime, power| prime ** power}.inject(:*)
    end
    divisors.sort.map {|div| [div, number/div]}
  else
    []
  end
end