Получение наименее общего кратного массива целых чисел в Ruby
Я знаю, что в Ruby вы можете использовать метод Integer#lcm
, чтобы получить наименьшее общее число из двух чисел. Например:
10.lcm(15)
# => 30
Есть ли эффективный (или встроенный в ядро или stdlib) способ получить наименьший общий кратный всех целых чисел в заданном массиве? Например:
[5, 3, 10, 2, 20].lcm
# => 60
Ответы
Ответ 1
Любая операция, которая принимает два операнда, может быть применена итеративно к коллекции, свернув ее. Это Enumerable # вводит/уменьшает в Ruby. Для того, чтобы покрыть пустой корпус, вы передаете в качестве первого аргумента единичного элемента операции (1
, в данном случае).
>> [5, 3, 10, 2, 20].reduce(1, :lcm)
=> 60