[ Foro de C ]

Descomposicion en factores primos

30-Jul-2018 18:56
Invitado (Anon1)
1 Respuestas

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.


01-Aug-2018 18:27
Invitado (Pasaba por aqu)

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.)