JSFiddle - React, Tailwind, and code Playground

by cowCrazy

HTML

<ul id="result">

</ul>

JavaScript

function multiplyDict(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);
  }
    
  var primeDivs = allPrimes(arr[1]);  
  
  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;
        }
      }
    }
  }

  return divsDict;
}

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 = multiplyDict([1,13]);
console.log(x);
for (key in x) {
	$('#result').append('<li>' + key + ': ' + x[key] + '</li>');
}