编辑代码

#include <stdio.h>

// 计算最大公约数
int gcd(int m, int n) {
    int temp;
    while (n != 0) {           // 欧几里得算法‌:ml-citation{ref="1,2" data="citationList"}
        temp = m % n;
        m = n;
        n = temp;
    }
    return m;
}

// 计算最小公倍数
int lcm(int M, int N) {
    return (M * N) / gcd(M, N);  // 公式法‌:ml-citation{ref="2,3" data="citationList"}
}

int main() {
    int num1, num2;
    printf("请输入两个自然数: ");
    scanf("%d %d", &num1, &num2);

    if (num1 <= 0 || num2 <= 0) { // 输入验证‌:ml-citation{ref="4,5" data="citationList"}
        printf("输入必须为正整数!");
        return 1;
    }

    printf("最小公倍数:%d\n", lcm(num1, num2));
    printf("最大公约数:%d\n", gcd(num1, num2));
    return 0;
}