2012-01-11 9 views
1

나는이 고전적인 면접 질문이지만, 여기에 내가 내 하루 작업에서 할 필요가 없습니다, 어떤 두 수의 최소 공배수를 반환하는 함수를 작성에서 내 빠른 시도 알고 이것이 매우 clunky하다고 생각합니다. 더 효율적인 솔루션이나 표준 솔루션이 있습니까?두 숫자 중 최저 배수를 찾는 방법은 무엇입니까?</p> <pre><code>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 </code></pre> <p>I :

+0

인가 이 문제를 종이에서 어떻게 해결할 수 있을까요? –

+0

나는이 질문에 대한 답을 생각해 내기 위해 4 분의 한도를 줬다. 아마도 내가 취한 시간의 두 배가 될 것이다. 아마 종이에서 똑같이했을 것입니다. – Jason

답변

10

내가 루비에서이 작업을 수행 할 것 다음합니다 (Euclidean algorithm로 예를 들면) 최대 공약수를 계산 :

x.lcm(y) 

:

+0

Nice - 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

관련 문제