2.8 KiB

id, title, localeTitle, isRequired, challengeType
id title localeTitle isRequired challengeType
ae9defd7acaf69703ab432ea Smallest Common Multiple El múltiplo común más pequeño true 5

Description

Encuentre el múltiplo común más pequeño de los parámetros provistos que pueden dividirse de manera uniforme por ambos, así como por todos los números secuenciales en el rango entre estos parámetros. El rango será una matriz de dos números que no necesariamente estarán en orden numérico. Por ejemplo, si se proporciona 1 y 3, encuentre el mínimo común múltiplo de 1 y 3 que también es divisible por todos los números entre 1 y 3. La respuesta aquí sería 6. Recuerde usar Lectura-Búsqueda-Preguntar si te quedas atascado Trate de emparejar el programa. Escribe tu propio código.

Instructions

Tests

tests:
  - text: ' <code>smallestCommons([1, 5])</code> debe devolver un número.'
    testString: 'assert.deepEqual(typeof smallestCommons([1, 5]), "number", "<code>smallestCommons([1, 5])</code> should return a number.");'
  - text: ' <code>smallestCommons([1, 5])</code> debe devolver 60.'
    testString: 'assert.deepEqual(smallestCommons([1, 5]), 60, "<code>smallestCommons([1, 5])</code> should return 60.");'
  - text: ' <code>smallestCommons([5, 1])</code> debe devolver 60.'
    testString: 'assert.deepEqual(smallestCommons([5, 1]), 60, "<code>smallestCommons([5, 1])</code> should return 60.");'
  - text: ' <code>smallestCommons([2, 10])</code> debe devolver 2520.'
    testString: 'assert.deepEqual(smallestCommons([2, 10]), 2520, "<code>smallestCommons([2, 10])</code> should return 2520.");'
  - text: ' <code>smallestCommons([1, 13])</code> debe devolver 360360.'
    testString: 'assert.deepEqual(smallestCommons([1, 13]), 360360, "<code>smallestCommons([1, 13])</code> should return 360360.");'
  - text: ' <code>smallestCommons([23, 18])</code> debe devolver 6056820.'
    testString: 'assert.deepEqual(smallestCommons([23, 18]), 6056820, "<code>smallestCommons([23, 18])</code> should return 6056820.");'

Challenge Seed

function smallestCommons(arr) {
  return arr;
}


smallestCommons([1,5]);

Solution

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);
}