c语言怎么求最小公倍数

img


怎么求最小公倍数

 两个for循环有错误,i=1;进入循环条件是i >=b,根本进入不了循环。第一个for循环应该为i=b,其余不变。第二个for循环应该改为i=a,其余不变。

img

如果有用,请采纳。

推荐你去学习一下数论的基本知识,想求最小公倍数,你可以先用辗转相除法求出a和b的最大公约数,再用a乘b乘ab的最大公约数即可求出最小公倍数,由算术基本定理可得上述过程

#include <stdio.h>

void swap(int *a, int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

int gcd(int a, int b)
{
    if (a > b)
        swap(&a, &b);
    if (b % a == 0)
        return a;
    return gcd(b % a, a);
}

int lcm(int a, int b)
{
    return a * b / gcd(a, b);
}

int main()
{
    int a, b;
    printf("请输入两个整数: ");
    scanf("%d%d", &a, &b);
    printf("%d,%d最小公倍数是%d\n", a, b, lcm(a, b));
    return 0;
}