minimo comun multiplo

Iniciado por emily.mp, 24 Agosto 2017, 17:42 PM

0 Miembros y 1 Visitante están viendo este tema.

emily.mp

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

#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);
}


ivancea96

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.

emily.mp

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

ivancea96

Pusiste 'i' en vez de 'j' en esta condición:
j=i;
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:
if(isPrime(i)){
    // ...
}