解题思路:

关于最大公因数:正确的表述应该是最大公因数是能够同时整除 a 和 b 的最大正整数。


关于最小公倍数:正确的表述应该是最小公倍数是能够同时被 a 和 b 整除的最小正整数。


首先,通过用户输入获取两个正整数 a 和 b 。

为了找到最大公约数,先确定两个数中的较小值 min 。然后从 min 开始递减遍历,找到第一个能同时整除 a 和 b 的数,即为最大公约数 glc ,找到后通过 break 语句结束循环。

对于最小公倍数,先确定两个数中的较大值 max 。然后从 max 开始递增遍历,找到第一个能同时被 a 和 b 整除的数,即为最小公倍数 lcm ,找到后通过 break 语句结束循环。


注意事项:

1.在输入两个数时,要确保输入的是正整数,否则可能导致计算错误。

2.计算最大公约数和最小公倍数的循环边界需要根据数学原理合理设置,以避免出现死循环或错误的结果。



参考代码:

#include <stdio.h>
/*
 * 输入两个正整数m和n,求其最大公约数和最小公倍数。
 * */
int main() {
    int a, b;
    scanf("%d%d", &a, &b);
    int max = (a > b)? a : b;
    int min = (a > b)? b : a;
    int glc = 0, lcm = 0;
    for (int i = min; i >= 1; i--) {//最大公约数一定不会大于两个数中的较小值。因为如果一个数能同时整除两个数,那么它一定小于或等于两个数中的较小值。
        if (a % i == 0 && b % i == 0) {
            glc = i;
            break;
        }
    }

    for (int i = max; i <= a * b; ++i) {//因为两个数的最小公倍数一定大于等于两个数中的较大值。
        if (i % a == 0 && i % b == 0) {
            lcm = i;
            break;
        }
    }
    printf("%d %d\n", glc, lcm);
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论