Class: Integer

Inherits:
Object
  • Object
show all
Defined in:
lib/mathn.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_prime_division(pd) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/mathn.rb', line 37

def Integer.from_prime_division(pd)
  value = 1
  for prime, index in pd
    value *= prime**index
  end
  value
end

Instance Method Details

#gcd2(int) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/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_divisionObject

Raises:

  • (ZeroDivisionError)


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/mathn.rb', line 45

def prime_division
  raise ZeroDivisionError if self == 0
  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