Cálculo del máximo común divisor MCD por el método de Euclides en C
– Prog066
/* Prog066.cpp */
/* Cálculo del M.C.D de dos números */
#include <stdio.h>
void main()
{
int x,y; int aux; int resto;
printf(«n Escribe un número x: «); scanf(«%d»,&x);
printf(«n Escribe otro número y: «); scanf(«%d»,&y); if(x<y)
{
aux=x;
x=y;
y=aux;
}
if((x % y) == 0) resto=y;
while ((x % y) != 0)
{
resto=x-y*(x/y); x=y;
y=resto;
}
printf(«n El M.C.D es: %d»,resto);
}
El programa anterior pero utilizando una función
– Prog067
/* Prog067.cpp */
#include <stdio.h>
int MCD(int,int); void main()
{
int a,b;
int mcd;
printf(«n Número: «);
scanf(«%d»,&a); printf(«n Número: «); scanf(«%d»,&b); mcd=MCD(a,b);
printf(«nn El MCD de %d y %d es %d»,a,b,mcd);
}
int MCD(int x,int y)
{
int aux; int resto; if(x<y)
{
aux=x;
x=y;
y=aux;
}
if((x % y) == 0) resto=y; while ((x % y) != 0)
{
resto=x-y*(x/y); x=y;
y=resto;
}
return resto;
}
A partir del Fich001.c escribe el siguiente fichero, que deberás grabar donde siempre – Fich002.c
/* Fich002.c */
/* Determinación de un número primo
*/ int primo(int num)
{
int resto,i,result; for(i=2;i<num-1;i++)
{
resto=num % i;
if ((resto==0) && (num != 2)) return 0;
}
return 1;
}
/* Determinación del M.C.D de dos números
*/ int MCD(int x,int y)
{
int aux;
int resto;
if (x<y)
{
aux=x;
x=y;
y=aux;
}
if ((x % y)==0) resto=y;
while ((x % y) != 0)
{
resto=x-y*(x/y); x=y;
y=resto;
}
return resto;
}
No compiles el fichero anterior ya que se trata de un fichero biblioteca
Vamos a probar la función MCD, que acabamos de incluir en Fich002.c
– Prog068
/* Prog068.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich002.c»
void main()
{
int a,b;
int mcd;
char otra[1];
otra[0]=’s’;
while (otra[0]==’s’)
{
printf(«n Número: «);
scanf(«%d»,&a);
printf(«n Número: «);
scanf(«%d»,&b); mcd=MCD(a,b);
printf(«nn El MCD de %d y %d es %d»,a,b,mcd);
printf(«nn Quieres otro MCD (s/n)? «);
scanf(«%s»,otra);
}
}
Vamos a hacer el mismo programa anterior pero que calcule también el mínimo común múltiplo.
– Prog069
/* Prog069.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich002.c»
void main()
{
int a,b;
int mcd;
int prod;
char otra[1];
otra[0]=’s’;
while (otra[0]==’s’)
{
printf(«n Número: «); scanf(«%d»,&a);
printf(«n Número: «); scanf(«%d»,&b);
prod=a*b;
mcd=MCD(a,b);
printf(«nn El MCD de %d y %d es %d»,a,b,mcd);
printf(«nn El mcm de %d y %d es %d»,a,b,prod/mcd);
printf(«nn Quieres otro cálculo (s/n)? «); scanf(«%s»,otra);
}
}
Programa que simplifica una fracción, utilizando la función MCD, que tenemos enFich002.c
– Prog070
/* Prog070.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich002.c»
void main()
{
int a,b;
int div;
printf(«n Escribe el numerador: «); scanf(«%d»,&a);
printf(«n Escribe el denominador: «); scanf(«%d»,&b);
div=MCD(a,b);
printf(«n Fracción simplificada: %d / %d»,a/div,b/div);
}
Vamos a hacer el programa anterior pero con arrays.
– Prog071
/* Prog071.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich002.c»
void main()
{
int f [2],fs [2]; int i,div;
printf («n Escribe el numerador: «); scanf(«%d»,&f[0]);
printf («n Escribe el denominador: «); scanf(«%d»,&f[1]); div=MCD(f[0],f[1]);
for (i=0;i<2;i++) fs[i]=f[i]/div;
printf(«n Fracción simplificada: %d / %d»,fs[0],fs[1]);
}
Vamos a hacer el mismo programa pero a través de una función: simplifica
– Prog072
/* Prog072.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich002.c»
void simplifica(int ,int );
void main()
{
int f [1];
int i;
printf(«n Escribe el numerador: «); scanf(«%d»,&f[0]);
printf(«n Escribe el denominador: «); scanf(«%d»,&f[1]); simplifica(f[0],f[1]);
}
void simplifica(int a,int b)
{
int div; div=MCD(a,b);
printf(«n Fracción Simplificada: %d / %d»,a/div,b/div);
}
A partir del Fich002.c escribe el siguiente:
– Fich003.c
/* Fich003.c */
/* Determinación de un número primo
*/ int primo(int num)
{
int resto,i,result; for(i=2;i<num-1;i++)
{
resto=num % i;
if ((resto==0) && (num != 2)) return 0;
}
return 1;
}
/* Determinación del M.C.D de dos números
*/ int MCD(int x,int y)
{
int aux;
int resto;
if (x<y)
{
aux=x;
x=y;
y=aux;
}
if ((x % y)==0) resto=y;
while ((x % y) != 0)
{
resto=x-y*(x/y); x=y;
y=resto;
}
return resto;
}
/* Simplifica una fracción
*/ void simplifica(int a,int b)
{
int div;
div=MCD(a,b);
printf(«nFracción Simplificada: %d / %d»,a/div,b/div);
}
Vamos a probar la función simplifica que tenemos en Fich003.c
– Prog073
/* Prog073.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich003.c»
void main()
{
int f[1];
int i;
printf(«n Escribe el numerador: «); scanf(«%d»,&f[0]);
printf(«n Escribe el denominador: «); scanf(«%d»,&f[1]); simplifica(f[0],f[1]);
}
Vamos a hacer un programa que sume dos fracciones.
– Prog074
/* Prog074.cpp */
#include <stdio.h>
#include «c:TuCarpetaFich003.c»
void main()
{
int f1[2],f2[2];
int mcd,num;
printf(«Escribe la 1ª fracción: n»); scanf(«%d %d»,&f1[0],&f1[1]); printf(«Escribe la 2ª fracción: n»); scanf(«%d %d»,&f2[0],&f2[1]); mcd=(f1[1]*f2[1])/MCD(f1[1],f2[1]); num=(mcd/f1[1])*f1[0]+(mcd/f2[1])*f2[0];
printf(«nn Suma de %d/%d + %d/%d = «,f1[0],f1[1],f2[0],f2[1]); printf(» %d / %d»,num,mcd);
printf(«nn»);
simplifica(num,mcd);
}
Fuente: Programación en C/C++ (Manual FV) de Fermí Vilà