hola "juangebeboz", tu problema está en el bucle
while. Tu código es este:
Código C++:
Ver originalwhile (n%cont==0){
if (n%cont!=0){
cont=cont+1;
}
n=n/cont;
cout << cont << "·";
}
Por ejemplo, cuando ingresas el numero 10 en el programa hace lo siguiente:
Linea 1: el resto de 10/2 es cero, por lo tanto es verdadero e ingresa el bucle.
Linea 2: el resto de 10/2 es cero, por lo tanto la condicion da falso y no se ejecuta la linea 3, salta a la 6.
Linea 6: n= 10/2, por lo tanto n ahora toma el valor 5.
Linea 7: se imprime en pantalla el numero 2 que es uno de los factores primos de 10.
ahora vuelve a evaluar la condicion del bucle
while la cual da falso porque el resto de 5/2 no es cero.
El problema fue que no se cambio el valor de la variable
cont en caso de que ya no sea factor de 10.
para resolver este problema lo unico que tienes que hacer es mover la condicion
if que tienes al principio del bucle al final de este, quedando de la siguiente manera:
Código C++:
Ver originalwhile (n%cont==0)
n= n/cont;
cout<< cont<< ".";
if (n%cont!=0){
cont= cont+1;
}
ahora bien, el programa divide a
n por el factor y lo guarda, luego comprueba si el nuevo
n, en el caso de 10 es 5, se puede dividir nuevamente por
cont, en caso contrario aumenta en 1 la variable
cont para comenzar el bucle de vuelta y comprobar con 3.
El problema no esta todavia solucionado, porque cuando el bucle se corre por primera vez, se imprimira en pantalla "2." y la variable
cont pasa a valer 3 y
n vale ahora 5, pero al evaluarse nuevamente la condicion del bucle da falso, por lo que la condicion a evaluar habria que cambiarla de
n%cont==0 a
n!=1. Esta nueva condicion hara que el bucle termine cuando el numero
n valga 1, ya que aqui no podras seguir dividiendo mas.
Ahora habria que agregar una condicion
if(n%cont==0) dentro del bucle y que contenga las 2 siguientes lineas de codigo:
esto hara que la variable
n solamente cambie cuando el resto de dividir n y cont de cero.
el codigo resultante es el siguiente (te pongo solamente el bucle while que es lo que cambie):
Código C++:
Ver originalwhile (n!=1){
if (n%cont==0){
n=n/cont;
cout << cont << ".";}
if (n%cont!=0){
cont=cont+1;
}
}
Saludos y espero que hayas entendido lo que hice