2015-11-18 06:14:39 +00:00
|
|
|
def gcd(m, n)
|
|
|
|
|
m, n = n, m % n until n.zero?
|
|
|
|
|
m.abs
|
|
|
|
|
end
|
|
|
|
|
|
2013-04-10 21:29:02 -07:00
|
|
|
def lcm(*args)
|
|
|
|
|
args.inject(1) do |m, n|
|
2015-11-18 06:14:39 +00:00
|
|
|
return 0 if n.zero?
|
|
|
|
|
(m * n).abs / gcd(m, n)
|
2013-04-10 21:29:02 -07:00
|
|
|
end
|
|
|
|
|
end
|
2015-11-18 06:14:39 +00:00
|
|
|
|
|
|
|
|
p lcm 12, 18, 22
|
|
|
|
|
p lcm 15, 14, -6, 10, 21
|