求两个整数mn的最小公倍数

要写一个求mn两个整数最小公倍数的程序,最后运行没反应

#include
void main()
{
    int m,n,a,r;
    //int b;
    r = 1;
    scanf_s("%d %d", &m, &n);
    //if (m < n)
    //{
    //    m = b;
    //    b= n;
    //    n = m;
    //}
    if (m / n != r)
        a = m * n;
    while (a = m * n / (m / n));
    printf("%d", a);
}

while语句要干啥呢???加入要while结束,那a一定是0
但显然while条件中只是一个赋值语句,a如果不为0,就是个死循环,自然没有输出
你的代码完全看不懂在干啥

参考这个案例:

#include <stdio.h>

// 求最大公约数
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}

// 求最小公倍数
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

int main() {
    int m, n;
    printf("请输入两个整数:");
    scanf("%d %d", &m, &n);
    printf("%d和%d的最小公倍数为:%d", m, n, lcm(m, n));
    return 0;
}

该回答引用ChatGPT

你的程序中有几个语法错误和逻辑错误,可能导致无法正确输出最小公倍数。

下面是修正后的程序,包括以下修改:

1.将void main()改为int main(),以便在程序结束时返回一个整数值。

2.将if (m / n != r)改为if (m % n != 0),以检查m是否是n的倍数。

3.将while (a = m * n / (m / n));改为while (m % n != 0),以检查是否需要进行下一次循环。

4.将printf("%d", a);放在while循环之外,以便在找到最小公倍数后输出结果。

5.删除了一些被注释掉的代码,以保持程序简洁和易读。

下面是修改后的程序:


#include <stdio.h>

int main()
{
    int m, n, a, r;
    r = 1;
    scanf("%d %d", &m, &n);
    if (m % n != 0)
        a = m * n;
    while (m % n != 0)
    {
        a = m * n / (m / n);
        m = n;
        n = a;
    }
    printf("%d", a);
    return 0;
}

这个程序应该能够正确输出给定两个整数的最小公倍数。

搜一搜:辗转相除法
你这while里啥都不写是要干啥呢,死循环吗