求最大公约数的函数

                                  求最大公约数的函数

                                          ----------------kvew        www.smatrix.org

利用广义欧几里得除法

设a,b是任意的两个正整数,记 R0 = a, R1 =  b,反复运用欧几里得除法,有:

                    R0 = R1*Q1   +    R2,                0<=R2<R1,

                    R1 = R2*Q2   +    R3,                0<=R3<R2,

                     -------------------------------------------------

                   R (n-2)  = R(n-1)*Q(n-1)    +    R(n),     0<=R(n)<R(n-1),

                   R (n-1)  = R(n)*Q(n)    +    R(n+1),       R(n+1) = 0,

经过有限步骤,必然存在n使得R(n+1) = 0,因为:

                 0 <= R(n+1) < R(n) < R(n-1) < -----< R2 < R1 = b

且b是有限正整数。

定理:设a,b是任意两个正数,则(a,b) = R(n),其中R(n)为广义欧几里得除法中最后一个非零余数。证明略。

其实原理讲了这么多,真正的函数只有以下怎么几行:

int gcd(int a, int b){
   
   if(b == 0)
       return a;
   
   return gcd(b, a%b);
}

参考 :《信息安全数学基础》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值