JSFiddle - React, Tailwind, and code Playground

by cowCrazy

HTML

<p id="result">

</p>

JavaScript

function smallestCommons(arr) {
  
  arr.sort(function (a, b) {
    return a - b;
  });
  
  if (arr[0] === 1) {
    arr[0] = 2;
  }
  
  var currentArr = [];
  
  for (var i = arr[0]; i <= arr[1]; i++) {
    currentArr.push(i);
  }
  
  //console.log(currentArr);
  
  var primeDivs = allPrimes(arr[1]);  
  
  //console.log(primeDivs);
  var divsDict = {};
  
  for (var j = currentArr[0]; j <= currentArr[currentArr.length -1]; j++){
    divsDict[j] = [];
    if (primeDivs.indexOf(j) > -1) {
      divsDict[j].push(j);
    } else {
      var x = j;
      for (var n = 2; n <= Math.floor(j / 2); n++) {
        if (x % n === 0) {
          divsDict[j].push(n);
          x = x / n;
          n--;
          continue;
        }
      }
    }
  }

  //console.log(divsDict);
  
  var multiArr = [];

  var arrCount = arr[0] + 1;
  
  function add(num, ind, array){
    if (ind === 0) {
      arrCount ++;
    }
    multiArr.push(num);
    //console.log('Now in array: ' + array);
    //console.log('num pushed: ' + num);
    for (var s = arrCount; s <= arr[1]; s++) {
      var index = divsDict[s].indexOf(num);
      //console.log(divsDict[s]);
      //console.log(num + ' found in index ' + index);
      if (index > -1) {
        var spliced = divsDict[s].splice(index, 1);
        //console.log('deleted: ' + spliced);
      }
    }
  }
  
  for (var m = arr[0]; m <= arr[1]; m++) {
    divsDict[m].forEach(add);
  }
  
  //console.log(multiArr);
  
  var sum = multiArr.reduce(function(a, b) {
    return a * b;
  }, 1);
    
  return sum;
}

function allPrimes(num) {
  var primeArr = [];
  
  var smallestDiv = 2;
  
  loopi:
  for (var i = 2; i <= num; i++) {
    loopj:
    for (var j = smallestDiv; j <= largestDiv(i); j++) {
      if (i % j === 0) {
        continue loopi;
      }
    }
    primeArr.push(i);
  } 
    
  return primeArr;
}

function largestDiv (a) {
  return Math.floor(Math.sqrt(a));
}

var x = smallestCommons([1,13]);
console.log(x);
$('#result').html(x);