美文网首页程序员
欧几里得算法心得(辗转相除法)

欧几里得算法心得(辗转相除法)

作者: 卷帘门 | 来源:发表于2016-09-09 23:07 被阅读0次

辗转相除法是用来计算两个整数的最大公约数。假设两个整数为ab,他们的公约数可以表示为gcd(a,b)。如果gcd(a,b) = c,则必然a = mcb = nc。a除以b得商和余数,余数r可以表示为r = a - bkk这里是系数。因为cab的最大公约数,所以c也一定是r的最大公约数,因为r = mc - nck = (m-nk)c

因此gcd(a,b) = gcd(b,r),相当于把较大的一个整数用一个较小的余数替换了,这样不断地迭代,直到余数为0,则找到最大公约数。

举例两个整数为1071462
第一步:1071 / 462 = 2 * 462 + 147
第二步:462 / 147 = 3 * 147 + 21
第三步:147 / 21 = 7 * 21 + 0

此时余数为零,则21为两个数的最大公约数。

贝祖公式表明对于任意两个整数ab,都可以找到一对可为负的整数xy,可以使等式xa + yb = m,其中m为ab的最大公约数,合理性稍加思考可得。如果m1说明ab互素。所以在互素的情况下,xa + yb = 1。这个等式对于求乘法逆元有很大的帮助。

那么如何通过贝祖公式及扩展欧几里得算法来求乘法逆元呢?举一个例子来描述什么是乘法逆元。如果ab mod m = 1,或者可以表示为ab ≡ 1 mod m,这里b就是a关于模数m的乘法逆元。计算乘法逆元的方法就是扩展欧几里得算法,以下通过一个例子来帮助理解:

假设我们要求3 关于模26的乘法逆元(隐含了326的最大公约数为1,即互素)。当a = 3b = 26,则根据贝祖公式,存在整数xy3x + 26y = 1

思路就是等号两边同时mod 26,等式则变成(3x + 26y) mod 26 = 1 mod 26,根据模运算的性质(a + b) mod m = (a mod m + b mod m) mod m

所以展开等式(3x mod 26 + 26y mod 26) mod 26 = 1 mod 26。化简最终得到(3x mod 26) mod 26 = 1 mod 26。我们发现3x mod 26 = 1正好符合了乘法逆元的定义,所以欧几里得算法就是解x的关键。

下面将通过辗转相除法来求x

第一步:26 = 3 * 8 + 2
第二步:3 = 2 * 1 + 1

统一将余数换到等号左边:
2 = 26 - 3 * 8
1 = 3 - 2 * 1

将第一行的2替换到第二行,保证等式左边永远为1,等式右边变成仅由3x + 26y组成。
1 = 3 - (26 - 3 * 8) * 1 = 3 * 9 + (-1) * 26
可得x = 9
最后9就是3关于模26的乘法逆元。它可以应用于仿射加密。

附:仿射加密的公式e(x) = ax + b mod m, 其中am互素, b为移动距离。
仿射解密公式d(x) = a-1(x - b) mod m

相关文章

  • 算法-辗转相除法

    算法:辗转相除法(欧几里得算法) GCD递归定理 辗转相除法算法概述 辗转相除法伪代码 辗转相除法代码实现 对于两...

  • 扩展欧几里德算法

    扩展欧几里得算法(英语:Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)...

  • 扩展欧几里得算法

    扩展欧几里得算法(Extended Euclidean algorithm)是欧几里得算法(又叫辗转相除法)的扩展...

  • 欧几里得算法心得(辗转相除法)

    辗转相除法是用来计算两个整数的最大公约数。假设两个整数为a和b,他们的公约数可以表示为gcd(a,b)。如果gcd...

  • 辗转相除法求最大公因数 2020-03-12

    今天做了一道题,需要求最大公因数,已经完全把辗转相除法忘记了,特此记录 辗转相除法 辗转相除法,也叫欧几里得算法,...

  • 欧几里得算法(辗转相除法)

    介绍 欧几里得算法,又称辗转相除法,用于计算两个整数的最大公约数。 原理 下面通过一个例子介绍其原理:计算105和...

  • 拓展欧几里得算法

    问题 求线性同余方程ax+by=c的整数解 思路 首先介绍下欧几里得算法的原理,众所周知,欧几里得算法是辗转相除法...

  • 欧几里得算法

    欧几里得算法又称辗转相除法,用于求两个非负整数的最大公约数。

  • 欧几里得算法

    欧几里得算法 介绍 概念 欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和...

  • [最大公约数] 欧几里得算法(辗转相除法)

    在数学中,欧几里得算法,又称辗转相除法,是求最大公约数(greatest common divisor)的算法。辗...

网友评论

    本文标题:欧几里得算法心得(辗转相除法)

    本文链接:https://www.haomeiwen.com/subject/beqyettx.html