当前位置:文档之家› C语言【最大公约数和最小公倍数】的两种方法

C语言【最大公约数和最小公倍数】的两种方法

C语言【最大公约数和最小公倍数】的两种方法
By Minecig
1.
//第一种是比较麻烦的方法,着重看加粗的函数实现部分:#include <stdio.h>
int main()
{
int yue(int m,int n);
int bei(int m,int n);
int gy,gb,i,j,l;
printf("请输入两个整数:\n");
scanf("%d %d",&i,&j);
if (i<j) {l=i; i=j; j=l;}
gy=yue(i,j);
gb=bei(i,j);
printf("最大公约数:%d\n",gy);
printf("最小公倍数:%d\n",gb);
return 0;
}
int yue(int m,int n)
{
int i,t;
if(m<n)
{
i=m;m=n;n=i;
}
for(i=n;i>=1;i--)
{
if(m%i==0&&n%i==0)
return i;
}
}
int bei(int m,int n)
{
int i,t;
if(m<n)
{
t=m;m=n;n=t;
}
for(i=m;i<=m*n;i++)
{
if(i%m==0&&i%n==0)
return i;
}
}
2:
//这种函数算法要好的多,利用了“辗转相除法”和“最小公倍数=x*y/最大公约数" 的算法#include <stdio.h>
int main()
{
int yue(int m,int n);
int bei(int m,int n,int gy);
int gy,gb,i,j,l;
printf("请输入两个整数:\n");
scanf("%d %d",&i,&j);
if (i<j) {l=i; i=j; j=l;}
gy=yue(i,j);
gb=bei(i,j,gy);
printf("最大公约数:%d\n",gy);
printf("最小公倍数:%d\n",gb);
return 0;
}
int yue(int m,int n)
{
int l;
l=m%n;
if (l==0) return(n);
else yue(n,l);
}
int bei(int i,int j,int gy)
{
int l;
l=i*j/gy;
return(l);
}
/*番外:两个数x和y,最大公约数是z的话,那么最小公倍数=x*y/z */。

相关主题