JSFiddle - React, Tailwind, and code Playground

by hescano

JavaScript

function decomp(n) {
  var result = "";
  var allFactors = factors(factorial(n));
  for (var key in allFactors) {
    result += allFactors[key] === 1 ? key + " * " : key + "^" + allFactors[key] + " * ";
  }
  return result.substr(0, result.length - 3);
}

function factorial(n) {
  if (n < 2) {
    return 1;
  }
  return n * factorial(n - 1);
}

function factors(r) {
  var i;
  var counter = {};
  for (i = 2; i <= r; i++) {
    while ((r % i) === 0) {
      if (counter[i]) {
        counter[i]++;
      } else {
        counter[i] = 1;
      }
      r /= i;
    }
  }
  
  return counter;
}

console.log(decomp(25))