一道C语言题,帮帮忙做做

来源:百度知道 编辑:UC知道 时间:2024/05/25 15:17:25
求两个整数的最到公约数和最小公倍数,用一个函数求最大公约数,用另一个函数求根据求出的最大公约数求最小公倍数。
1 不用全局变量,分别用两个函数求最大公约数和最小公倍数。两个整数在主函数中输入,并传送给函数1,求出的两个函数求最大公约数和最小公倍数。
2 用全局变量的方法,分别用两个函数求最大公约数和最小公倍数,但其值不由函数带回。将最大公约数和最小公倍数都设为全局变量,在主函数中输入他们的值。
二楼的第二题有点问题

1.
//----------------------------------------
#include <stdio.h>

int gy(int a,int b) //返回 最大公约数
{
if (b==0) return a;
else gy(b,a%b);
}
int gb(int a,int b,int ys) //返回 最小公倍数
{
return (a*b/ys);
}
int main()
{
int a,b,ys;
scanf("%d%d",&a,&b);
ys=gy(a,b);
printf("%d\n",ys); //输出最大公约数
printf("%d\n",gb(a,b,ys)); //输出最小公倍数
return 0;
}

2.
//------------------------------------------------
#include <stdio.h>
int x,y,gy,gb; //x、y是参与运算的整数,gy、gb分别是x与y的最大公约数和最小公倍数。
void ys(void)
{
int temp,a=x,b=y;
while (b!=0)
{
temp=b;
b=a%b;
a=temp;
}
gy=a;
}
void bs(void)
{
gb=x*y/gy;
}
int main()
{
scanf("%d%d",&x,&y);
ys();
bs();
printf("%d %d\n