因为我是初学者Ruby开发人员。我想知道更高级的Ruby开发人员将如何解决这个问题。我在这里寻找最小的数字除以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 :(得分: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