24 lines
396 B
Ruby
24 lines
396 B
Ruby
module Math
|
|
|
|
# Greatest common divisor of +m+ and +n+, +nil+ for non-positive
|
|
# numbers - gcd is computed by means of the Euclidian algorithm.
|
|
def self.gcd(m, n)
|
|
m = Integer(m)
|
|
n = Integer(n)
|
|
if m <= 0 || n <= 0
|
|
return nil
|
|
end
|
|
loop {
|
|
if m < n
|
|
m, n = n, m
|
|
end
|
|
if (l = m % n) == 0
|
|
break
|
|
end
|
|
m = l
|
|
}
|
|
n
|
|
end
|
|
|
|
end
|