2 条题解

  • 0
    @ 2025-9-26 22:54:35

    方法思路:

    最大公约数(GCD):

    使用欧几里得算法。核心思想是:用较大数除以较小数得到余数,再用除数除以余数,重复此过程直到余数为 0,此时的除数即为最大公约数。

    最小公倍数(LCM):

    利用公式LCM(a,b)=ab/GCD(a,b)LCM(a,b) = a*b/GCD(a,b)
    (因为两个数的乘积等于它们的最大公约数和最小公倍数的乘积)

    #include <stdio.h>
    
    // 辗转相除法求最大公约数
    int gcd(int x, int y) {
        int remainder;
        while (y != 0) {
            remainder = x % y;
            x = y;
            y = remainder;
        }
        return x;
    }
    
    int main() {
        int a, b;
        // 输入两个正整数
        scanf("%d %d", &a, &b);
        
        // 计算最大公约数
        int gcd_val = gcd(a, b);
        // 计算最小公倍数
        int lcm_val = a * b / gcd_val;
        
        // 输出结果
        printf("%d %d\n", gcd_val, lcm_val);
        
        return 0;
    }
    

    信息

    ID
    616
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    (无)
    递交数
    26
    已通过
    12
    上传者