在求最大公约数和最小公倍数过程
#include<stdio.h>
long long int gcd(long long int a,long long int b)
{
long long int r = a % b;
while (r != 0)
{
r = a % b;
a = b; b = r;
}
return b;
}
long long int lcm(long long int a, long long int b)
{
long long int d;
d = gcd(a,b);
long long int c;
c = (a * b) / d;
return c;
}
int main(void)
{
long long int a, b, d, m;
scanf_s("%lld %lld", &a, &b);
if (a < 0 || b < 0)
{
printf("Input Error");
}
else
{
d = gcd(a,b);
m = lcm(a,b);
printf("%lld %lld",d,m);
}
return 0;
}
不报错,但是输不出结果
在gcd函数里,你令b=r,因为只有r==0时才结束循环,所以该函数返回值永远为0。而在lcm中有:d = gcd(a,b);c = (a * b) / d; d为gcd函数返回值等于0,而在c = (a * b) / d中,你把0作为了被除数,这是不可以的
程序结束会显示程序结束的
如果不显示程序结束,说明陷入死循环或者无限递归了
你确定是c语言,不是c++吗
如果是c语言,你语法也不对呀
c语言所有变量定义必须在最前面,你调用函数之后还定义变量,这也编译不过去呀