辗转相除法原理学习记录

辗转相除法原理记录

“假设有两个数x和y,存在一个最大公约数z=(x,y),即x和y都有公因数z。
那么x一定能被z整除,y也一定能被z整除,所以x和y的线性组合mx±ny也一定能被z整除。(m和n可取任意整数)。
对于辗转相除法来说,思路就是:若x>y,设x/y=n余c,则x能表示成x=ny+c的形式,将ny移到左边就是x-ny=c,由于一般形式的mx±ny能被z整除,所以等号左边的x-ny(作为mx±ny的一个特例)就能被z整除,即x除y的余数c也能被z整除。”

所以求两数最大公约数的问题,也就转化为了求余数和较小数字的最大公约数的问题。

以具体数字展示就是,以(200,30)为例
200 = 306 + 20,
30 = 20
1 + 10,
20 = 10*2 + 0,
所以(200,30)= 10。

具体实现形式(C):

   int u = 32;
    int v = 26;
    while(v != 0){
        int temp = u % v;
        u = v;
        v = temp;
    }
    printf("%d",u);
    getchar();
    return 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值