C语言计算最小公倍数

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:35:57
#include <stdio.h>
main()
{
int a,b;
int lcm(int,int);
scanf("%d%d",&a,&b);
printf("%d\n",lcm(a,b));
}
int lcm(int x,int y)
{ int temp,k;
temp=x*y;
while (x!=0)
{
k=y%x;
y=x;
x=k;
}
return(temp/y);

}
哪里错了?
#include <stdio.h>
main()
{
int a,b;
int lcm(int,int);
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",lcm(a,b));
}
}
int lcm(int x,int y)
{ int temp,k;
temp=x*y;
while (x!=0&&y!=0)
{
k=y%x;
y=x;
x=k;
}
return(temp/y);

}
这样子。。才过了

我在VC6.0上运行,没有错误。是正确的。要相信自己。

没有错啊,我在我机器上没有错误...

int lcm(int,int); 函数声明 放main函数外面啊

int lcm(int,int);
main()
{
}

看不出哪里错了

你是指客观上的错误还是主观上的错误?

注意大小 若y<x的话第一步 k=y%x k就等于0了 然后 y=x x=k 为0跳出,得出结果为y

正确:
#include <stdio.h>
main()
{
int a,b;
int lcm(int,int);
scanf("%d%d",&a,&b);
printf("%d\n",lcm(a,b));
}
int lcm(int x,int y)
{ int temp,k,mul=x*y;
if (y<x)
{
temp=x;
x=y;
y=temp;
}
while (x!=0)
{
k=y%x;
y=x;
x=k;
}
return(mul/y);

}