Class | Integer
In: | mathn.rb
Parent: | Object

### Methods

from_prime_division gcd2 prime_division

### Public Class methods

from_prime_division(pd)

[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

gcd2(int)

[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

prime_division()

[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]