写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。请帮忙啊!

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。请帮忙啊!
#include
int hef(int u,int v)
{
int t,r;
if(v>u)
t=v;
v=u;
u=t;
while((r=u/v)!=0)
{
u=v;
v=r;
}
return(v);
}
int led(int u,int v,int h)
{
return(u*v/h);
}
void main()
{
int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hef(u,v);
printf("H.C.F=%d\n",h);
l=led(u,v,h);
printf("L.C.D=%d\n",l);
}
这个执行后输出结果不正确。

看了下,你的求公约数的函数算法有问题,给你改了下,源码和运行结果如下:

//求公约数和最小公倍数

#include

//求两个整数的最大公约数

int hef(int u,int v)

{

int t, r = 1, i = 2;

//让u是较大的那个数

if(v>u)

{

t=v;

    v=u;

    u=t;

}

/*if (0 == u % v)

return v;

else */

/*while((r=u/v)!=0)

{

u=v;

v=r;

}*/

//i最后的结果就是余迅槐最大公约数

for (i; i <= v; i ++)

{

if ((0 == u % i) && (0 == v % i))

r = i;

}

return(r);

}

//求最小公倍数

int led(int u,int v,int h)

{

return(u*v/h);

}

void main()

{

int u,v,h,l;

printf ("Please input two integers (12,8) ");

scanf("%d,%d",&u,&v);

h=hef(u,v);

printf("H.C.F=%d ",h);

l=led(u,v,h);

printf("L.C.D=%d ",l);

}

ps:一开始就要养成良好的写代竖友码的好习惯,该注释的一定要注释

友好的界面,昌盯一点小小的建议


← 上一篇: 下一篇: →