自由输入两个数并求出其最大公约数和最小公倍数

自由输入两个数,并求出其最大公约数与最小公倍数。
比如:输入5和10
它们的最大公约数5,最小公倍数10
任意3位数内均可,带中文输出。

点赞采纳,谢谢!


#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 num1, num2;  
    printf("请输入两个数(1-999):\n");  
    scanf("%d %d", &num1, &num2);  
    int g = gcd(num1, num2);  
    int l = lcm(num1, num2);  
    printf("%d和%d的最大公约数是%d,最小公倍数是%d。\n", num1, num2, g, l);  
    return 0;  
}

【以下回答由 GPT 生成】

题解:

#include <stdio.h>

int main() {
    int a, b;
    printf("请输入两个整数:\n");
    scanf("%d %d", &a, &b);

    int gcd = calcGCD(a, b);
    int lcm = calcLCM(a, b);

    printf("最大公约数为:%d\n", gcd);
    printf("最小公倍数为:%d\n", lcm);

    return 0;
}

int calcGCD(int a, int b) {
    int temp;
    while (b != 0) {
        temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}

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

解释:

首先,我们创建了一个main函数,在其中声明了两个变量ab,并提示用户输入两个整数。

然后,通过调用scanf函数,将用户输入的两个整数赋值给ab

接下来,我们调用了两个自定义函数calcGCDcalcLCM,分别用来计算最大公约数和最小公倍数。

calcGCD函数中,我们使用了辗转相除法来计算最大公约数。我们通过先计算a除以b的余数,并将余数赋值给一个中间变量temp。然后将b赋值给a,将temp赋值给b。循环执行上述过程,直到b变为0。最后,返回a的值,即为最大公约数。

calcLCM函数中,我们先调用calcGCD函数,通过计算最大公约数来求得最小公倍数。最小公倍数可以通过先计算两个数的乘积,再除以最大公约数得到。

最后,在main函数中,我们使用printf函数将最大公约数和最小公倍数分别输出给用户。

注意:由于要支持中文输出,如果使用的是Windows平台,需要在文件头部添加如下代码:

#include <locale.h>

int main() {
    setlocale(LC_ALL, "");
    // ...
}

这样就可以在Windows系统中正确显示中文字符。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^