RE:auxilio tengo un problema
Hola Katherine.
Entiendo que quieres saber cómo se hace un programa para encontrar el máximo común divisor de dos números.
Te he diseñado un pequeño programa y te lo adjunto en el final de esta nota.
Encontré en una página la manera como se haría normalmente en una hoja de papel. Héchale un vistaso:
http://lubrin.org/mat/spip.php?article718
Como podrás darte cuenta, sería muy complicado hacer un programa que encuentre el M.C.D con este método.
Yo pienso que es más fácil hacerlo mentalmente si comprendes realmente lo que es esto.
En la página mencionada, ponen un ejemplo con los números: 24, 36 y 40.
El Máximo Común Divisor es 4. ¿Poqué?
Un divisor común podría ser el 2 porque los tres números se pueden dividir dentro de 2. Un divisor común pero mayor puede ser el 4, pues los tres números se pueden dividir dentro de 4:
24/4 = 6, 36/4 = 9, 40/4 = 10.
Ya no hay un número más grande que el cuatro por el que se puedan dividir los tres números, poreso 4 es el máximo común divisor. ¿Ves qué fácil?
Esto lo puedes hacer sin escribir un sólo número.
Bien. Pues pensado de esa forma es como hice el siguiente código:
-----------------------------------------------------------------------------------------------
Program EncuentraMCD; (* Maximo Comun Divisor *)
Uses Crt;
Var PrimerNumero, SegundoNumero,
NumeroMenor, NumeroMayor, BuscaMCD, MCD : Integer;
Begin
ClrScr;
Repeat
Writeln('Ingrese el primer numero: Para salir ahora Ingrese 0');
ReadLn(PrimerNumero);
If PrimerNumero <> 0 then
Begin
Writeln('Ahora ingrese el segundo numero: ');
ReadLn(SegundoNumero);
If PrimerNumero < SegundoNumero then
Begin
NumeroMenor := PrimerNumero;
NumeroMayor := SegundoNumero
End else
Begin
NumeroMenor := SegundoNumero;
NumeroMayor := PrimerNumero;
End;
For BuscaMCD := 1 to NumeroMenor do
If (NumeroMenor mod BuscaMCD = 0) and (NumeroMayor mod BuscaMCD = 0) then
MCD := BuscaMCD;
WriteLn('El maximo comun divosor es: ', MCD); Writeln; Writeln;
End;
Until PrimerNumero = 0;
End.
----------------------------------------------------------------------------------------------------
La parte de "If PrimerNumero <> 0 then Begin" está solo para que el programa se repita hasta que el usuario presione un 0 para salir.
Los siguientes if son para determinar cuál es el número menor de los dos que ingresó el usuario. El MCD no puede ser mayor que el numero menor.
El operador mod, dá el residuo de la división entre los dos números. Si el residuo es 0, significa que sí se puede dividir un número dentro del otro y no sobra nada(El resultado no tiene decimales).
Saludos!