Class Integer
In: mathn.rb
Parent: Object

Methods

Public Class methods

[Source]

# File mathn.rb, line 37
  def Integer.from_prime_division(pd)
    value = 1
    for prime, index in pd
      value *= prime**index
    end
    value
  end

Public Instance methods

[Source]

# File mathn.rb, line 19
  def gcd2(int)
    a = self.abs
    b = int.abs
    a, b = b, a if a < b
    
    pd_a = a.prime_division
    pd_b = b.prime_division
    
    gcd = 1
    for pair in pd_a
      as = pd_b.assoc(pair[0])
      if as
        gcd *= as[0] ** [as[1], pair[1]].min
      end
    end
    return gcd
  end

[Source]

# File mathn.rb, line 45
  def prime_division
    ps = Prime.new
    value = self
    pv = []
    for prime in ps
      count = 0
      while (value1, mod = value.divmod(prime)
             mod) == 0
        value = value1
        count += 1
      end
      if count != 0
        pv.push [prime, count]
      end
      break if prime * prime  >= value
    end
    if value > 1
      pv.push [value, 1]
    end
    return pv
  end

[Validate]