JSFiddle - React, Tailwind, and code Playground
JavaScript
// Problema 2
function factorizar(n){
var results = [];
var x = n;
var esPrimo = function(a){
var i = 2, tope = ~~Math.sqrt(a);
while(i < tope && a % i) i++;
return a % i || a == 2; // Problema con el 2
}
for(var i = 2; i <= x; i++){
if(esPrimo(i) && !(x % i)){
var c = x;
while(!(c % i)){
results.push(i);
c /= i;
}
x /= i;
}
}
var str = '';
for(var i = 0, len = results.length; i < len; i++){
var x = results[i], exp = 0;
while(results[i + 1] == x){
i++; exp++;
}
str += ' x ' + x + (exp++ ? '^' + exp : '');
}
str = str.substr(3); // Borrar el primer " x "
return str;
}
[11, 6, 16, 98].forEach(function(n){ document.write(n, ' : ', factorizar(n), '<br />'); });