如何找到两个数字的最小公倍数?

时间:2012-01-11 16:56:43

标签: ruby algorithm

我知道这是一个经典的采访问题,但这是我快速尝试创建一个函数,它返回两个数字的最低公倍数,这是我在日常工作中从未做过的事情:

def calc_common_multiplyer(int_low, int_high)
  i = 1
  int_high_res = []

  while true
    int_high_res << int_high * i
    if int_high_res.include?(int_low * i)
      return int_low * i
    end 
    i = i+1
  end
end

我觉得这很笨重。是否有更高效或标准的解决方案?

3 个答案:

答案 0 :(得分:10)

我会在Ruby中这样做:

x.lcm(y)

:)

答案 1 :(得分:3)

首先计算最大公约数(例如Euclidean algorithm),然后

lcm(a,b) = if a == 0 && b == 0 then return 0 else return (a*b)/gcd(a,b)

答案 2 :(得分:-1)

 def find_lcm(n,m)
  n, m = m, n if m < n
  count = m
 until count % n == 0
  count += m 
 end
 count
 end