求最大公约数和最小公倍数

img

一个简单的实现:

#include <stdio.h>
int  gcd(int a, int b);
int lcm(int a, int b);



int main(void){
    
    int a , b;
    scanf("%d %d",&a,&b);
    int g=gcd(a,b);
    int l = lcm(a,b);
    printf("%d和%d的最大公约数是:%d\n",a,b,g); 
    printf("%d和%d的最小公倍数是:%d\n",a,b,l); 
    
}

/**
     * 辗转相减法
     * 算法参考:
     *     https://blog.csdn.net/yxdayd/article/details/44774015
    
*/
int  gcd(int a, int b){

    while(1){
        if(a>b)
            a-=b;
        else if(a<b)
            b -=a;
        else
            return a;
    }
}


int lcm(int a, int b){

    //最小公倍数是两数乘积除以最大公约数。
    //参考链接:https://blog.csdn.net/qq_43527632/article/details/83475439
    int gbs = a*b /gcd(a,b);
    
    return gbs;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^