写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输人。
# include <stdio.h>
int f(int n, int m)
{
int t, v;
if (n < m)
{
t = n;
n = m;
m = t;
}
while ((v = n%m) != 0)
{
n = m;
m = v;
}
return m;
}
int g(int n, int m, int g)
{
return (n*m)/g;
}
int main(void)
{
int n, m, g, l;
printf("n = ");
scanf("%d", &n);
printf("m = ");
scanf("%d", &m);
g = f(n, m);
l = g(n, m, g);
printf("greatest common divisor = %d\n", g);
printf("Least common multiple = %d\n", l);
return 0;
}
请问在:
while ((v = n%m) != 0)
{
n = m;
m = v;
}
中必须要(v = n%m)
然而这样:
while ((n%m) != 0)
{
n = m;
m = n%m;
}
虽然编译不会出错,但是运行达不到目的。
请教各位,不胜感激。