辗转相除法求最大公约数,最小公倍数

辗转相除法原理

image
求最大公约数转换为数学方法解决,以较大的数为长,较小的数为宽构成长方形,公约数就是有个正方形能恰好能填充满这个长方形,最大公约数就是找最大的那个正方形能恰好填满这个长方形。
a%b求余,如果余数为零,则最大公约数为b,否则,以a%b的余数为短边,b为长边,继续求余,直到余数为零为止。

void MaxCommonDivisor(int a,int b)
{
    if (a<b)
    {
        a=a+b;
        b=a-b;
        a=a-b;
    }
    while (b!=0)
    {
        int temp=a%b;
        a=b;
        b=temp;
    }
    printf("最大公约数为:%d\n",a);
}
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    MaxCommonDivisor(a,b);
    return 0;
}
posted @ 2024-04-24 16:32  夏雪呦  阅读(61)  评论(0)    收藏  举报