function descomponerEnPrimos(N) {
var arr = []; //aqui almacenamos los factores temporalmente
var resultado = N;// el primer valor que usaremos es N
while(resultado > 1) { // 'resultado' irá variando hasta hacerse 1
for (var i = 2; i<= N; i++) { // vamos realizando pruebas
if(resultado % i === 0) {
resultado = resultado / i; //actualizamos el valor de resultado
arr.push(i);
break; // salimos del bucle for
}
}
}
var factores = []; // aqui almacenaremos los factores de forma mas legible
var factor = arr[0]; // almacenamos el primer valor
var cont = 1; // instanciamos la cantidad de veces que aparece el primer elemento
if (arr.length > 1) { // si hay más de 1 elemento en el array
for(var i = 1; i < arr.length; i++){
if (factor !== arr[i]) { // si el factor cambia, ya no se repite más, podemos almacenarlo
factores.push({factor: factor, seRepite: cont});
factor = arr[i]; // establecemos el nuevo factor
cont = 0; // inciamos el contador en cero, en la siguiente linea aumentará 1
}
cont++; // si el factor se repite, aumentamos el contador, si estaba en cero se aumenta a 1
}
factores.push({factor: factor, seRepite: cont}); // almacenamos el último factor encontrado
} else { // en caso que N sea primo, solo tiene un factor
factores.push({factor: factor, seRepite: cont});
}
return factores;
}