输入两个正整数m和n,求它们的最大公约数和最小公倍数

#include

int main() {
int m, n, c, d;
int i, j, k;
printf("请输入m的值");
scanf("%d", &m);
printf("请输入n的值");
scanf("%d", &n);
for (i = 1; ; i++) {
c = m % i;
d = n % i;
if (c == 0 && d == 0)
j = i;
if (m == i || n == i)
break;
}
for (i = 1; ; i++) {
c = m * 1;
d = n * 1;
if (c == d) {
k = c;
break;
}
}
printf("最大公约数为:%d", j);
printf("最小公倍数为:%d", k);
return 0;
}
我这个哪里错了只有m和n值一样的时候才能输出。两个值一但不一样就无反应,就打印不出数值

最小公倍数不需要你这么算啊,k=m*n/j;就是了啊


    for (i = 1;; i++)
    {
        c = m * 1;
        d = n * 1;
        if (c == d)
        {
            k = c;
            break;
        }
    }

这个地方for循环条件是个死循环。并且只有在if (c == d)才break。也就是m = n的时候才退出。