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