Class | Integer |
In: |
mathn.rb
|
Parent: | Object |
# File mathn.rb, line 37 def Integer.from_prime_division(pd) value = 1 for prime, index in pd value *= prime**index end value end
# 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
# 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