Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: emily.mp en 24 Agosto 2017, 17:42 pm



Título: minimo comun multiplo
Publicado por: emily.mp en 24 Agosto 2017, 17:42 pm
Tengo este codigo para obtener el minimo comun multiplo pero a la hora de ejecutarlo no corre, si alguien me pudiera decir cual es mi error

Código:
#include<stdio.h>
#include<stdbool.h>

int main()
{
    int a,b,c,i,j;
    scanf("%d\n%d\n%d", &a, &b, &c);
    int Prime=1;
    int total=1;
    i=2;
    while((a>1) || (b>1) || (c>1))
    {
        j=i;
        while(i>=2)
        {
            if((i%j==0) && (i!=j))
            {
                Prime=0;
            }
            j--;
        }
        if(Prime)
        {
            while((a%i==0) || (b%i==0) || (c%i==0))
            {
                if(a%i==0)
                    a=a/i;
                if(b%i==0)
                    b=b/i;
                if(c%i==0)
                    c=c/i;
                total=total*i;
            }
        }
        i++;
        Prime=1;
    }
    printf("%d\n", total);
}


Título: Re: minimo comun multiplo
Publicado por: ivancea96 en 24 Agosto 2017, 18:58 pm
Tal vez el algoritmo esté mal. Pruébalo con algunos números pequeños para ver por dónde debería pasar el programa y qué hace mal. Puedes poner algún printf para asegurarte de que los valores son correctos.


Título: Re: minimo comun multiplo
Publicado por: emily.mp en 24 Agosto 2017, 19:10 pm
Lo he probado con numeros pequeños, 7,3 y 2, el primer ciclo si lo hace bien pero cuando el numero primo a analizar es 3 deja de ejecutarse, segun la prueba de escritorio que hice deberia de funcionar


Título: Re: minimo comun multiplo
Publicado por: ivancea96 en 24 Agosto 2017, 19:27 pm
Pusiste 'i' en vez de 'j' en esta condición:
Código
  1. j=i;
  2. while(i>=2)

De todos modos, te recomendaría mover la parte de código que verifica si es primo o no a una función. Así lo tienes más limpio y ordenado:
Código
  1. if(isPrime(i)){
  2.    // ...
  3. }