2016-09-29 119 views
0

因爲我是初學Ruby開發人員。我想知道更多高級Ruby開發人員能夠解決這個問題。我在這裏尋找最小的數字,除以1到10的數字而沒有任何餘數。如何計算數字1至10的最小公倍數?

更正式地說,這是數字1定義爲兩個或多個整數的最小公倍數,在這種情況下,以10

我當前的嘗試:

max_divider = 10 
nums = (1..max_divider).to_a 
found_count = 0 
x = 0 
while found_count == 0 
    x += 1 
    nums.each do |num| 
    if x % num == 0 
     found_count += 1 
    end 
    end 

    if found_count != max_divider 
    found_count = 0 
    end 
end 

p x #=> 2520 
+0

你應該明確你的代碼是否工作。如果它有效,我會建議發佈到https://codereview.stackexchange.com。如果它不起作用,你應該解釋爲什麼你認爲它不起作用。 –

+0

既然你問過其他開發者會怎麼做:Ruby開發人員幾乎總是縮進兩個空格。 –

+0

我不同意誰投票結束這個問題「太寬泛」。這真的很窄。 –

回答

7
MAX_DIVIDER = 10 
DIVIDERS = (1..MAX_DIVIDER) 

number = MAX_DIVIDER 
number += 1 until DIVIDERS.all? { |divider| number % divider == 0 } 
number #=> 2520 

你也可以使用lcm方法Integer#lcm這將幫助您找到最小公倍數。

DIVIDERS.reduce(:lcm) #=> 2520 
+2

'Range'在'Enumerable'中混合,不需要將其轉換爲'Array'。只要'(1..10).reduce(:lcm)#=> 2520'就夠了。 –

+0

同樣的事情適用於'any?',實際上,這也是'Enumerable'方法。 –

+1

你的循環應該是一個單行:'number + = 1,直到DIVIDERS.all? {| divider |數字%divider == 0}' –

相關問題