2012-01-11 5 views
1

私は、これは古典的な面接の質問ですが、ここでは2つの数の最小公倍数を返す関数を作成する時、私の迅速な試みである私は私の一日の仕事でなければならないことはありません、何かを知っている:私は2つの数字の最低公倍数はどのようにして求められますか?

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 

をこれは非常にclunkyであると感じる。もっと効率的なソリューションや標準的なソリューションがありますか?

+0

されていますこれはあなたが紙でこの問題を解決する方法は? –

+0

私は自分自身にこの質問への答えを出すために4分の限界を与えました。おそらく2倍の時間がかかるでしょう。おそらく紙で同じことをしただろうか。 – Jason

答えて

10

を(Euclidean algorithmと例えば)最大公約数を計算し、私はRubyでこれを行うだろう:

x.lcm(y) 

を:)

+0

ニース - 私はRuby APIの再読み込みを開始するのが良い! :) – Jason

+0

@マークトーマス、それはどのように動作するかを示すリンクとサンプルを追加してみませんか? –

+0

@ theTinMan私はいつもやっていますが、時間が足りませんでした。 –

3

まず、その後、

lcm(a,b) = if a == 0 && b == 0 then return 0 else return (a*b)/gcd(a,b) 
-1
def find_lcm(n,m) 
    n, m = m, n if m < n 
    count = m 
until count % n == 0 
    count += m 
end 
count 
end 
+0

このコードスニペットは質問を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – Carpetsmoker

関連する問題