1.8 KiB
1.8 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
ae9defd7acaf69703ab432ea | Mínimo común múltiplo | 5 | 16075 | smallest-common-multiple |
--description--
Encuentra el múltiplo común más pequeño de los parámetros proporcionados que pueden dividirse equitativamente por ambos, así como por todos los números consecutivos del rango entre estos parámetros.
El rango será un arreglo de dos números que no necesariamente estarán en orden numérico.
Por ejemplo, si se dan 1 y 3, encuentra el múltiplo común más pequeño de 1 y 3 que también es dividido por todos los números entre 1 y 3. La respuesta sería 6.
--hints--
smallestCommons([1, 5])
debe devolver un número.
assert.deepEqual(typeof smallestCommons([1, 5]), 'number');
smallestCommons([1, 5])
debe devolver 60.
assert.deepEqual(smallestCommons([1, 5]), 60);
smallestCommons([5, 1])
debe devolver 60.
assert.deepEqual(smallestCommons([5, 1]), 60);
smallestCommons([2, 10])
debe devolver 2520.
assert.deepEqual(smallestCommons([2, 10]), 2520);
smallestCommons([1, 13])
debe devolver 360360.
assert.deepEqual(smallestCommons([1, 13]), 360360);
smallestCommons([23, 18])
debe devolver 6056820.
assert.deepEqual(smallestCommons([23, 18]), 6056820);
--seed--
--seed-contents--
function smallestCommons(arr) {
return arr;
}
smallestCommons([1,5]);
--solutions--
function gcd(a, b) {
while (b !== 0) {
a = [b, b = a % b][0];
}
return a;
}
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
function smallestCommons(arr) {
arr.sort(function(a,b) {return a-b;});
var rng = [];
for (var i = arr[0]; i <= arr[1]; i++) {
rng.push(i);
}
return rng.reduce(lcm);
}