Introducción
En la programación en C, se calcula a menudo el MCD (Máximo Común Divisor). Dos maneras diferentes se utilizan comúnmente para encontrar el MCD. Podemos utilizar el algoritmo de Euclides y calcular el MCD mediante restas repetidas. En este laboratorio paso a paso, demostraremos ambos métodos.
Utilizando el algoritmo de Euclides
El algoritmo de Euclides, en el que el numerador se reemplaza por el residuo de la operación de división, se utiliza para calcular el MCD. Cuando el residuo se convierte en cero, el MCD es el numerador.
1.1 Comience la solución declarando una variable entera llamada a y b.
int a, b;
1.2 A continuación, pida al usuario que ingrese los valores de a y b.
printf("Ingrese dos números: \n");
scanf("%d %d", &a, &b);
1.3 Luego, cree un bucle while que se ejecute hasta que el residuo de a dividido por b sea cero.
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
1.4 Finalmente, muestre el MCD de los dos números.
printf("El MCD de los dos números es %d", a);
Utilizando el método de restas repetidas
En este método, el MCD se calcula restando repetidamente el valor más pequeño al valor más grande hasta que ambos se vuelvan iguales. Si ambos se vuelven iguales, entonces ese número es el MCD.
2.1 Comience con una variable entera llamada num inicializada con 0.
int num = 0;
2.2 Declare una variable entera llamada x e inicialice con 2.
int x = 2;
2.3 Pida al usuario que ingrese la cantidad de enteros para los que desea encontrar el MCD.
printf("Ingrese la cantidad de enteros para los que desea encontrar el MCD: ");
scanf("%d", &num);
2.4 Luego, pida al usuario que ingrese los números.
printf("Ingrese %d números:\n", num);
int arr[num];
for(int i = 0; i < num; i++)
{
scanf("%d", &arr[i]);
}
2.5 Ahora podemos calcular el MCD tomando los valores de entrada y utilizando el método de restas repetidas. Llamaremos a la función gcd() para calcular el MCD de los valores de entrada.
int result = arr[0];
for(int i = 1; i < num; i++)
{
result = gcd(result, arr[i]);
}
Combinando los métodos
En este paso, combinaremos los métodos para completar la implementación.
3.1 Declare una función gcd() para utilizarla en la búsqueda del MCD mediante el método de restas repetidas.
int gcd(int a, int b)
{
if(b==0)
return a;
else if(a >= b && b > 0)
return gcd(b,a%b);
else
return gcd(b,a);
}
3.2 Declare una nueva variable llamada gcd_result e inicialícela en cero.
int gcd_result = 0;
3.3 Crearemos un nuevo bucle que le pedirá al usuario que ingrese números hasta que se detecte un valor de entrada de 0.
printf("Ingrese números. Para salir ingrese 0\n");
while(1) // bucle infinito para tomar la entrada
{
int num;
scanf("%d", &num);
if(num < 1)
break;
else if(gcd_result == 0)
gcd_result = num;
else if(num < gcd_result)
gcd_result = gcd(num, gcd_result);
else
gcd_result = gcd(gcd_result, num);
}
3.4 Por último, muestre el resultado final utilizando la función printf.
printf("El MCD de todos los números ingresados es: %d\n", gcd_result);
Resumen
En este laboratorio, aprendimos dos métodos para calcular el MCD de un grupo de enteros en la programación en C: el algoritmo de Euclides y el método de restas repetidas. Demonstramos cómo utilizar estos métodos con una explicación detallada y bloques de código de ejemplo. Para una mejor comprensión, se recomienda modificar y ejecutar el código en el archivo main.c.



