最大公约数

文章介绍了两种计算最大公约数的算法:辗转相除法和更相减损法。通过C语言实现,分别展示了如何用这两种方法找到两个数的最大公约数,例如36和24的情况。在辗转相除法中,通过连续除法和取余操作找到最大公约数;而在更相减损法中,通过不断相减直至两数相等来确定最大公约数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.辗转相除法
假设要用辗转相除法求 36 和 24 的最大公约数,则要经历以下步骤:

36 ÷ 24 = 1 …… 12
24 ÷ 12 = 2 …… 0
12 为 36 和 24 的最大公约数


#include <stdio.h>

int main()
{
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);

    while (1)
    {
        if (x < y)//比较大小,让小的数放在后面
        {
            int tmp = x;
            x = y;
            y = tmp;
        }
        
        if (x % y == 0)//若余数为 0 则 y 为两数的最大公约数;
        {
            printf("最大公约数的 %d\n", y);
            break;
        }
        else//若余数不为 0,则令 x = y,y = 余数,重复循环
        {
            int tmp = x % y;
            x = y;
            y = tmp;
        }
    }
    return 0;
}

2.更相减损法

以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到它们两个数相等为止。则相等的两个数就是所求的最大公约数

步骤
下面先看实例:(还是求36和24的最大公约数)

36 - 24 = 12
24 - 12 = 12
12 是 36 和 24 的最大公约数


#include <stdio.h>

int main()
{
    int x = 0;
    int y = 0;
    scanf("%d %d", &x, &y);

    while (1)
    {
        if (x < y)//比较大小,让小的数放在后面
        {
            int tmp = x;
            x = y;
            y = tmp;
        }

        if (x - y == 0)//若差为 0,则两数相等,它本身就是最大公约数;
        {
            printf("最大公约数的 %d\n", y);
            break;
        }
        else//若差不为 0,则令 x = y,y = 差,重复循环
        {
            int tmp = x - y;
            x = y;
            y = tmp;
        }
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李不会敲代码..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值