Código para FACTORIZAR UN NÚMERO en javaScript

Pruébalo

<html>
    <meta charset= utf-8 />
    <style>
    </style>
</head>
<body >
    <script>
//Genera los números primos
function primo(numero){
 var i=2;
 var saliruno=true;
 while(saliruno){
  if(0 == (numero%i)){
   return(i);
   saliruno=false;
  }
  i++;
 }
}
//Pedir por pantalla la información
        var num = prompt('Introduzca un numero (Entero y positivo)');
// Declaro los valores que voy ha necesitar
        var numero = num;
        var puesto;
        var memoria = "";
        var contador = 0;
        var rca = 0;
//Bucle que no se para hasta que el numero sea 1
        while (num != 1) {
//Recorre los números y lo trascribe en puesto uno a uno.
            puesto = primo(num);
//Si el numero es 0 sale del bucle y declara un error.
            if (num == 0) {
                num = true;
                alert("Error")
            }
//Compruebo si el numero se puede dividir y si no es así 
// se pasa al siguiente numero
            if (num % parseInt(puesto) == 0) {
                num /= puesto;
//Relleno la memoria con el valor que a permitido dividirla y lo separo por comas.
                memoria = (memoria + ",").toString().concat(puesto.toString());          
        }//Es para saber el numero que has introducirlo y mostrarlo
}
        document.write(numero + " = ");
//Bucle que recorre la memoria y otro dentro que hace la misma función, para 
//poder comprobar las veces que se repite un numero.
        for (var i = 0; i < memoria.split(",").length; i++) {
            contador = 0;//Saber las veces que se a repetido
            for (var j = 0; j < memoria.split(",").length; j++) {
                if (memoria.split(",")[i] == memoria.split(",")[j])
                    contador += 1;//Si al comprobar y resulta que se repiten +1
            }//Nos permite que solo pase una vez cada numero con su exponente(contador) gracias a rca
            if (memoria.split(",")[i] != rca){//rca es la memoria del numero anterior
                if (contador == 1)//Si solo se repite una vez, lo escribe sin cantador
                    document.write(memoria.split(",")[i] + " . ");
                else
                    document.write(memoria.split(",")[i] + "<sup>" + contador + "</sup> . ");
                rca = memoria.split(",")[i];//Se sobre-escribe con el numero , para que no se repita.
}//Muestra la ultima cifra ya que no se puede factorizar mas.
if(i== (memoria.split(",").length)-1 )
            document.write("</br>"+"Es primo y no se puede factorizar más : " + memoria.split(",")[i] );
}
    </script>
</body>
</html>

Comentarios

Entradas populares