[ Foro de C ]
Hola!
mi problema es que tengo que hacer un programa que haga lo siguiente:
Escribir un programa que realice la descomposición en factores primos de un número introducido por teclado. El programa deberá ir escribiendo la tabla de los factores primos a medida que se va calculando, tal como muestra el ejemplo siguiente:
Introduce un N entero -> 84
N Factores primos
----------- ---------------------
84 | 2
42 | 2
21 | 3
7 | 7
1 |
Este es el cogido que he utilizado pero no se que mas hacerle para que funcione.
#include <stdio.h>
#include <stdlib.h>
/*
Escribir un programa que realice la descomposición en factores primos de un
número introducido por teclado. El programa deberá ir escribiendo la tabla
de los factores primos a medida que se va calculando, tal como muestra el ejemplo siguiente:
*/
int operacion (n)
{
int division, i=2,x;
printf("N%c %i | %i \n",167, n, i);
for (i=2; i<=n; i++)
{
if (n%i==0)
{
n = n/i;
printf(" %i | %i \n",n,i);
}
else if (n%i!=0)
{
n = n/1;
i=1;
printf(" %i | %i \n",n, i);
}
}
}
int main()
{
int N,numero;
do
{
printf("Introduce un N%c entero -> ", 167);
scanf("%i", &N);
if (N<0)
printf("Error.\n");
}
while (N<0);
numero = operacion(N);
return 0;
}
nota: estoy usando funciones porque es un requerimiento de la clase.
Gracias de antemano.
Hola Anon1,
Hay más cosas, pero la variable i que usas como indice del for la estás reiniciando continuamente a 1 dentro del "else if" i=1. Así no sale del bucle.
Creo que te ayudaría añadir sentencias printf en los puntos críticos con el valor de las variables.
Ejemplo. printf ("Punto 1: el valor de n es %i y el valor de i es %i", n,i);
printf ("Punto 2: el valor de n es %i y el valor de i es %i", n,i);
...y así todos los que necesites. Cuando no los necesites los puedes comentar con /* */ y cuando todo funcione eliminarlos (tu profesor no los necesita).
Como el programa irá muy rápido puedes poner sentencias sleep(1); detrás de los printf de depuración.
Aparentemente no estás usando las variables x y división.
Estás usando la variable N en main() y luego n en la función. De acuerdo que son distintas pero te puede llevar a confusión. Hay más letras y nombres.
Que se de bien.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)