解题思路:

更相减损法求最大公约数,然后两数之积除以最大公约数便可得最小公倍数;

更相减损法:第一步,判断两数是否为偶数;若是则同用2约分;否则执行下一步;

                    第二步,用大数减去小数的差;继续判断差与小数中的大数再减去比较后的小数;依次相减直到两数相等;此时求出来的即为最大公约数;举个例子;(21,7);(14,7);(7,7),此时7就是两者的最大公约数。

参考代码:

#include<stdio.h>
int GCD(int a, int b)//更相减损法
{
    int ans = 1;
    int gcd;
    while (a % 2 == 0 && b % 2 == 0)
    {
        a /= 2;
        b /= 2;
        ans *= 2;
    }
    

    while (a != b)
        if (a>b)
            a -= b;
        else
            b -= a;
    gcd = a*ans;

    return gcd;
}
void main()
{
    int i,j,c;
    scanf("%d %d", &i, &j);
    c = GCD(i, j);
    printf("%d %d", c, (i*j/ c));
    
}

点赞(2)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论