如何计算数字1到10的最小公倍数?

Hub*_*iak 0 ruby

因为我是初学者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
Run Code Online (Sandbox Code Playgroud)

jan*_*kan 7

MAX_DIVIDER = 10
DIVIDERS = (1..MAX_DIVIDER)

number = MAX_DIVIDER
number += 1 until DIVIDERS.all? { |divider| number % divider == 0 }
number #=> 2520
Run Code Online (Sandbox Code Playgroud)

您还可以使用Integer#lcmlcm方法来帮助您找到最不常见的倍数.

DIVIDERS.reduce(:lcm) #=> 2520
Run Code Online (Sandbox Code Playgroud)

  • `Range`混合在`Enumerable`中,没有必要将它转换为`Array`.只需`(1..10).reduce(:lcm)#=> 2520`即可. (2认同)