C语言中如何调用函数求最大公约数和最小公倍数#include<stdio.h>voidmai

# include<stdio.h>
void main()
{
int fy(int x,int y);
int fb(int x,int y);
int a,b;
printf("请输入两整数:\n");
scanf("%d %d",&a,&b);
printf("最大公约数是:%d\n",fy(a,b));
printf("最小公倍数是:%d\n",fb(a,b));
}

int fy(int x,int y)
{
int k=1,i;
for(i=1;i<=(x<y?x:y);i++)
{
if(x%i==0 && y%i==0) k=i;
}
return k;
}

int fb(int x,int y)
{
int i;
for(i=x;i<=(x*y);i++)
{
if(i%x==0 && i%y==0) break;
}
return i;
}
先编写好最大公约数和最小公倍数的函数,如下:
int gcd(int a,b) //求最大公约数函数
{
if (a%b==0) return b;
else return gcd(b,a%b); //辗转相除法
}

int lcm(int a,b) //求最小公约数函数
{
int x;
x:=gcd(a,b); //调用gcd()函数
return a*b/x;
}

然后在main()主函数中调用gcd()函数和lcm()函数即可。(注:回答者编写的两个函数分别为求两个数的最大公约数和最小公倍数)。
如有错误,请多加原谅。
#include <stdio.h>
int main ()
{int p,r,n,m,temp;
printf("please enter two positive integer numbers n,m:");
scanf("%d %d",&n,&m);
if (n<m)
{temp=n;
n=m;
m=temp; //把大数放在n中, 小数放在m中
}
p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用
while (m!=0) //求n和m的最大公约数
{r=n%m;
n=m;
m=r;
}
printf("HCF=%d\n",n);
printf("LCD=%d\n",p/n); // p是原来两个整数的乘积
return 0;
}
1.计算两个整数的最大公因子(最大公约数)的欧几里得算法描述:

输入:两个非负整数a,b,且a>=b;

输出:a,b的最大公因子;

1).当b!=0时,做如下操作:

1.1 令r=a%b,a=b,b=r。

2).返回(a);

2.代码如下:

#include<stdio.h>
void input(int &a,int &b)
{
int data1,data2;
scanf("%d,%d",&a,&b);
}
int Euclid_gcd (int max,int min)
{
int r,temp;
if(max<min)
{
temp=max;
max=min;
min=temp;
}
while(min!=0)
{
r=max%min;
max=min;
min=r;
}
return max;
}
void main()
{
int a,b;
printf("请输入两个非负整数数:");
input(a,b);
printf("两数的最大公约数是:gcd(%d,%d)=%d/n",a,b,Euclid_gcd(a,b));
}
/*运行结果:
请输入两个非负整数数:3458,4864
两数的最大公约数是:gcd(3458,4864)=38

请输入两个非负整数数:4864,3458
两数的最大公约数是:gcd(4864,3458)=38

请输入两个非负整数数:12,16
两数的最大公约数是:gcd(12,16)=4
*/
http://blog.csdn.net/zhang450/article/details/6371596这是本人的csdn地址