C语言编程:输入三个正整数,求其最大公约数和最小公倍数。

2024年12月05日 02:45
有2个网友回答
网友(1):

C语言编程中,输入三个正整数,求其最大公约数和最小公倍数的一种方法是:

  • 定义一个函数,用辗转相除法求两个正整数的最大公约数。

  • 定义另一个函数,用两个正整数的乘积除以它们的最大公约数得到最小公倍数。

  • 在主函数中,从键盘输入三个正整数 a、b、c,并调用上述两个函数分别求出 a 和 b 的最大公约数和最小公倍数。

  • 再用 a 和 b 的最小公倍数与 c 求出三个正整数的最小公倍数,并用 a 和 b 的最大公约数与 c 求出三个正整数的最大公约数。

  • //求两个正整数的最大公约数int gcd(int x, int y){    int r;    while(y > 0)
    {
    r = x % y;
    x = y;
    y = r;
    }    return x;
    }//求两个正整数的最小公倍数int lcm(int x, int y){    return x * y / gcd(x, y);
    }//主函数#include int main(){    int a, b, c; //输入的三个正整数
    int g1, g2; //最大公约数
    int l1, l2; //最小公倍数

    printf("请输入三个正整数:\n");    scanf("%d%d%d", &a, &b, &c);

    g1 = gcd(a, b); //求a和b的最大公约数
    l1 = lcm(a, b); //求a和b的最小公倍数

    g2 = gcd(g1, c); //求三个正整数的最大公约数
    l2 = lcm(l1, c); //求三个正整数的最小公倍数

    printf("三个正整数的最大公约数是:%d\n", g2);    printf("三个正整数的最小公倍数是:%d\n", l2);    return 0;
    }

网友(2):

#include
int main()
{
int x, y, z, i, j;
scanf_s("%d%d%d", &x, &y, &z);
for (i = x; i > 0; i--)
{
if (x % i == 0 && y % i == 0 && z % i == 0)
break;
}
for (j = x; ; j++)
{
if (j % x == 0 && j % y == 0 && j % z == 0)
break;
}
printf("%d %d", i, j);
return 0;
}