求两个正整数的最大公约数,最小公倍数

时间:2023-01-01 19:06:39

(1)用while判断语句做        

printf("请输入两个正整数:\n");

        int a = 0,b = 0,a1 = 0,b1 = 0, res = 0;

        scanf("%d%d", &a, &b);

        a1 = a,b1 = b;

        res = a1 % b1;

        while (res != 0) {

             a1 = b1;

           b1 = res;

            res = a1 % b1;

            if (res == 0) {

                break;

            }

        }

        printf("最大公约数是:%d\n", b1);

        printf("最小公倍数是:%d", a * b / b1);

 

(2)用三目运算符做       

        int a, b;

        printf("请输入两个正整数:\n");

        scanf("%d%d", &a, &b);

        for (int i = (a > b ? a : b); i > 0; i--) {

            if (a % i == o && b % i == 0) {

                printf("最大公约数是:%d", i);

            }

        }

        printf("请输入两个正整数:\n");

        int num1 = 0, num2 = 0;

        scanf("%d%d", &num1, &num2);

        

        for (int i = (num1 > num2 ? num1 : num2); i <= num1 * num2; i++) {

            if (i % num1 == 0 && i % num2 == 0) {

                printf("最小公倍数是:%d", i);

            }

        }