著写流传2300年数学经典,被世人称为“几何学之父”——欧几里得( 二 )


欧几里得算法在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法 。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》 。
两个整数的最大公约数是能够同时整除它们的最大的正整数 。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数 。例如,252和105的最大公约数是21(252=21×12; 105=21×5);因为 252 ? 105 = 21 × (12 ? 5) = 147,所以147和105的最大公约数也是21 。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零 。这时,所剩下的还没有变成零的数就是两数的最大公约数 。由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,如21 = 5 × 105 + (?2) × 252。这个重要的结论叫做裴蜀定理 。


著写流传2300年数学经典,被世人称为“几何学之父”——欧几里得

文章插图


辗转相除法的演示动画(图自维基):
两条线段长分别可表示252和105,则其中每一小分段长代表最大公约数21 。如动画所示,只要辗转地从大数中减去小数,直到其中一段的长度为0,此时剩下的一条线段的长度就是252和105的最大公因数 。
辗转相除法有很多应用,它甚至可以用来生成全世界不同文化中的传统音乐节奏 。在现代密码学方面,它是RSA算法(一种在电子商务中广泛使用的公钥加密算法)的重要部分 。它还被用来解丢番图方程,比如寻找满足中国剩余定理的数,或者求有限域中元素的逆 。辗转相除法还可以用来构造连分数,在施图姆定理和一些整数分解算法中也有应用 。辗转相除法是现代数论中的基本工具 。
辗转相除法处理大数时非常高效,如果用除法而不是减法实现,它需要的步骤不会超过较小数的位数(十进制下)的五倍 。拉梅于1844年证明了这点,同时这也标志着计算复杂性理论的开端 。