# 获得一个数的所有除数 def get_divisors(n) result = [] 1.upto(n ** 0.5) {|i| result += [i, (n / i)] if n % i == 0} result.uniq end # 获得两个数的最大公约数 def get_max_divisor(n, m) n, m = m, n if n < m r = n % m return m if r == 0 get_max_divisor(m, r) end # 获得两个数的最小公倍数 def get_min_common(x, y) z = get_max_divisor(x, y) x * y / z end
具体示例:
p get_divisors(10) # => [1, 10, 2, 5] p get_max_divisor(15, 20) # => 5 p get_min_common(15, 20) # => 60