輾轉相除法
在数学中，辗转相除法，又称欧几里得算法（），是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》（第VII卷，命题i和ii）中，而在中国则可以追溯至东汉出现的《九章算术》。
两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理：两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。例如，252和105的最大公约数是21（formula_1）；因为，所以147和105的最大公约数也是21。在这个过程中，较大的数缩小了，所以继续进行同样的计算可以不断缩小这两个数直至余数为零。这时，所剩下的还没有变成零的数就是两数的最大公约数。由辗转相除法也可以推出，两数的最大公约数可以用两数的整数倍相加来表示，如。这个重要的結論叫做貝祖定理。
辗转相除法最早出现在欧几里得的《几何原本》中（大约公元前300年），所以它是现行的算法中歷史最悠久的。这个算法原先只用来处理自然数和几何长度（相當於正實數），但在19世纪，辗转相除法被推广至其他类型的數學對象，如高斯整数和一元多项式。由此，引申出欧几里得整环等等的一些现代抽象代数概念。后来，辗转相除法又扩展至其他数学领域，如纽结理论和多元多项式。
辗转相除法有很多应用，它甚至可以用来生成全世界不同文化中的传统音乐节奏。在现代密码学方面，它是RSA算法（一种在电子商务中广泛使用的公钥加密算法）的重要部分。它还被用来解丢番图方程，比如寻找满足中国剩余定理的数，或者求有限域中元素的逆。辗转相除法还可以用来构造连分数，在施图姆定理和一些整数分解算法中也有应用。辗转相除法是现代数论中的基本工具。
辗转相除法处理大数时非常高效，如果用除法而不是减法实现，它需要的步骤不会超过较小数的位数（十进制下）的五倍。拉梅于1844年证明了这点，同時這也標誌著计算复杂性理论的開端。
欧几里得的辗转相除法计算的是两个自然数"a"和"b"的最大公约数"g"，意思是能够同时整除"a"和"b"的自然数中最大的一个。两个数的最大公约数通常写成GCD("a", "b")，或者简写成("a", "b")，但是第二种写法也被使用在其他数学概念，如二维向量的坐标。
如果GCD("a", "b") = 1，則稱"a"和"b"互素。"a"和"b"是否互素和它们是否素数无关。如，6和35都不是素数，因为它们都可以分解为多于一个素因数的乘积：6 = 2 × 3，35 = 5 × 7。但是，6和35互素，因为除了1以外没有自然数同时整除6和35。
令"g" = GCD("a", "b")。由于"a"和"b"都是"g"的整数倍，所以可以写成"a" = "mg"、"b" = "ng"，并且不存在更大的整数"G" > "g"使等式成立。为了使"g"尽可能大，就要使"a"和"b"中所有公约数都提取出来归入"g"中，所以自然数"m"和"n"一定互素，并且"a"和"b"的最大公约数"g"可以被"a"和"b"的所有其他公因数"c"整除。
我们可以用右图来解释最大公约数的概念：設一个长方形的边长为"a"和"b"。因为"a"和"b"的任何公约数"c"都可以整除"a"和"b"，所以长方形的边都可以等分为长度为"c"的线段，也就是长方形可以被边长为"c"的正方形正好填满。而最大公约数"g"是所有可能的"c"中最大的一个。例如，一个24 × 60的长方形区域可以分成1 × 1、2 × 2、3 × 3、6 × 6或12 × 12的正方形网格。也就是说，12是24和60的最大公约数。
"a"和"b"的最大公约数是两数共有的素因数的乘积。例如，462可以分解成2 × 3 × 7 × 11；1071可以分解成3 × 3 × 7 × 17。462和1071的最大公约数等于它们共有的素因数的乘积3 × 7 = 21。如果两数没有公共的素因数，那么它们的最大公约数是1，也即这两个数互素。辗转相除法的优点就在於它能以有系統的方式求出兩數的最大公约数，而無需分別對它們作因式分解。大数的素因数分解被認為是一個困難的問題，即使是现代的计算机也非常难於處理，所以许多加密系统的原理都是建基於此。
在数学中，尤其是抽象代数的环论中，最大公约数有一个更加巧妙的定义："a"和"b"的最大公约数"g"是"a"和"b"的线性和中的最小正整數，即所有形如"ua" + "vb"（其中"u"和"v"是整数）的数中的最小正整数。可以證明，所有"ua" + "vb"都是"g"的整数倍（"ua" + "vb" = "mg"，其中"m"是整数）。用现代数学语言來說，"a"和"b"生成的理想即是由"g"生成的主理想。最大公约数的这个定义和其他定义的等价性将在下面描述。
三个数的最大公约数的定义和两个数的相同，即是它们共有的素因数的积，它们或者也可以按下式计算：
所以，欧几里得的辗转相除法实际可以计算任意多整数的最大公约数。
下文的論證會用到三種相關的数学方法，分別是数学归纳法、递归和无穷递降。数学归纳法经常用来证明某個定理對所有自然数成立：首先证明定理对一个特定的数"n"成立（通常是1）；然后證明如果定理对自然数"n"成立的話，那麼它对自然数"n" + 1成立。這樣，便可證明定理对所有大于"n"的自然数也成立。递归是将相关的数组成一个数列("a", "a", "a"...)，當中除初始項外，其中每一项都用前一项或前几项表示。如斐波那契数列就是递归的，每一项"F"都等于"F" + "F"（n≧2）。辗转相除法中的一些等式也是递归的。最后，无穷递降是用方程的一个自然数解导出比它小的自然数解。但是，这种转化不能永远进行下去，因为只有有限個小於原來的自然数解的自然数。所以，要麼方程無解，不然在有限步内必然能得出最小的自然數解。在下文會用到此法來证明辗转相除法一定会在有限步内结束。
辗转相除法是一种递归算法，每一步计算的输出值就是下一步计算时的输入值。设"k"表示步骤数（从0开始计数），算法的计算过程如下。
每一步的输入是都是前两次计算的非負余数"r"和"r"。因为每一步计算出的余数都在不断减小，所以，"r"小于"r"。在第"k"步中，算法计算出满足以下等式的商"q"和余数 "r"：
其中0 ≤ "r" 上文）用表格表示如下：
辗转相除法的计算过程可以用图形演示。假设我们要在"a"×"b"的矩形地面上铺正方形瓷砖，并且正好铺满，其中"a"大于"b"。我们先尝试用"b"×"b"的瓷砖，但是留下了"r"×"b"的部分，其中"r"伪代码表示，比如除法版本可以寫成
c++版本： int gcd(int m,int n)
Rust版本： fn gcd(x: isize, y: isize) -> Option {
Python3版本： def gcd(a, b):
在第"k"次循环开始时，变量"b"的值是前一次运算的余数"r"，变量"a"的值是再前一次运算的余数"r"。步骤"b" := "a" mod "b"的作用等同于递归式"r" ≡ "r" mod "r"。变量"t"的功能是在下一个余数"r"计算过程中临时性地保存"r"的值。在一次循环结束时，变量"b"的值是前一次运算的余数"r"，变量"a"的值是再前一次运算的余数"r"。
在欧几里得定义的减法版本，取餘运算被减法替换。
变量"a"和"b"的值分别是前两次的余数"r"和"r"。假定第"k"次循环开始时"a"大于"b"，那么"a"等于"r"，因为"r" > "r"。在循环过程中，"a"重复减去"b"直到比"b"小，此时"a"就是下一个余数"r"；然后"b"重复减去"a"直到比"a"小，此时"b"就是下一个余数"r"；重复执行直到"b" = 0。
以下是递归版本：
c++递归版本如下： int gcd(int n,int m)
Rust递归版本： fn gcd(x: isize, y: isize) -> Option { Java版本： public class MethodOfSuccessiveDivision {
Python3版本： def gcd(a, b): 例如GCD(1071, 462)的计算过程是：函数的第一次调用计算GCD(462, 1071 mod 462) = GCD(462, 147)；下一次调用计算GCD(147, 462 mod 147) = GCD(147, 21)，在接下来是GCD(21, 147 mod 21) = GCD(21, 0) = 21。
在另一个版本的算法中，每一步还要把取余运算时计算出的商增加一后再重新计算余数（此时计算出的余数应该是负的），然后取两个余数的绝对值较小的数作为下一步运算时使用的余数。取余运算后，设"r"是计算出的余数（此時為正），"q"是计算出的商：
即假設。然後使用以下式子计算出一个负的余数"e"：
如果|"e"| 利奥波德·克罗内克所指出的，这个版本需要的运算步骤是欧几里得算法的所有版本中最少的。
辗转相除法是目前仍然在使用的历史最悠久的算法之一。它首次出现于《几何原本》（卷7命题1–2、卷10命题2–3）（大约公元前300年）。在卷7中用于整数，在卷10中用于线段的长度（以現代的觀點看，线段的长度可視為正实数，也就是說辗转相除法實際可用於實數上，但是当时未有实数的概念）。卷10中出现的算法是几何的，两段线段"a"和"b"的最大公约数是"a"和"b"的公度中的最大值。
这个算法可能并非欧几里得发明，因為他也有将先前其他數學家的一些成果编进他的《几何原本》。数学家、历史学家认为卷7的内容可能来自毕达哥拉斯学院出身的数学家写的关于数论的教科书。辗转相除法在當時很可能已為尤得塞斯（大約公元前375年）所知 ，甚至可能更早之前就已经存在，因为欧几里得和亚里士多德的著作中都出现了一词（意为“辗转相减”）。
几个世纪之后，辗转相除法又分别被中国人和印度人独立发现，主要用来解天文学中用到的丢番图方程以及制定准确的历法。5世纪末，印度数学家、天文学家阿里亚哈塔曾稱辗转相除法为“粉碎机”，這可能是因为它在解丢番图方程时很有效。在中国，《九章算术》中提到了一种类似辗转相减法的“更相减损术”。《孙子算经》中則出现了中国剩余定理的一个特例，但是直到1247年秦九韶才於其《数学九章》中解答了該定理的一般情況，當中用到了他發明的大衍求一术。此法的其中一部分實際上便是輾轉相除的原理，秦九韶在書中對此有明確表述。在欧洲，辗转相除法首次出现于的著作《愉悦讨喜的问题》（""）的第二版在欧洲，辗转相除法被用于丢番图方程和構建连分数。后来，英国数学家在其著作中收編了扩展欧几里得算法，作为一個有效计算连分数的方法。他將此法的來源歸名於。
19世纪，辗转相除法促成了新数系的建立，如高斯整数和艾森斯坦整数。1815年，高斯用辗转相除法证明高斯整数的分解是惟一的，儘管他的研究到了1832年才首度发表。高斯在他的《算数研究》（出版于1801年）中實際上也有援引这个算法，但僅是以连分数方法的形式敘述。约翰·狄利克雷是第一个将辗转相除法作为数论的基础的数学家。狄利克雷提出，数论中的很多结论，如分解的惟一性，在任何使辗转相除法適用的数系中均有效。狄利克雷的數論講義後來經理查德·戴德金編輯和推广，戴德金也有以辗转相除法來研究代数整数。比如，他是第一个用高斯整数的分解惟一性证明费马平方和定理的数学家。戴德金还率先定义了欧几里得整环的概念。19世纪末，戴德金所定義的理想概念使得數論的重心不必建基於輾轉相除法，從而促進了理論的發展。
辗转相除法的其他应用发展于19世纪。1829年，施图姆将辗转相除法用于施图姆序列（用于确定多项式的不同实根的个数的方法）。
辗转相除法是历史上第一个，即寻找两個可通約實數的整数关系的算法。近年来，出现了一些新颖的整数关系算法，如和福尔卡德于1979年发表的弗格森-福尔卡德算法（Ferguson–Forcade algorithm） 、以及与它相关的、HJLS算法以及PSLQ算法。
1969年，科尔（Cole）和戴维（Davie）基于辗转相除法创造了一种二人游戏，叫做「欧几里得游戏」。这个游戏有最优策略。游戏开始于两列分别为"a"和"b"个棋子组成的序列，玩家轮流从较长一列中取走较短一列棋子数量的"m"倍的棋子。如果两列棋子"p"和"q"分别由"x"和"y"个棋子组成，其中"x"大于"y"，那么玩家可以將序列"p"的棋子数量减少为自然数"x" − "my"。最后率先将一列棋子清空的玩家胜出。
贝祖等式说明，两个数"a"和"b"的最大公约数"g"可以表示为"a"和"b"的线性和。也就是说，存在整数"s"和"t"使"g" = "sa" + "tb"。
整数"s"和"t"可以从辗转相除法算出的商"q"、"q"……计算出。 从辗转相除法的最后一步开始，"g"可以表示成前一步的商"q"和前两步的余数"r"和"r"：
而前两步的余数又分别可以表示成它们前两步的余数和商：
将这两行式子先後代入第一个式子，可以将"g"表示成"r"和"r"的线性和。重复进行迭代直到出现"a"和"b"：
最终，"g"可以表示成"a"和"b"的线性和："g" = "sa" + "tb"。贝祖等式以及以上证明都可以扩展至欧几里得整环。
贝祖等式提供了另一种定义"a"和"b"的最大公约数"g"的方法。考虑形如"ua" + "vb"（其中"u"和"v"是整数）的数的集合。因为"a"和"b"都可以被"g"整除，所以这个集合中的所有元素都可以被"g"整除。也就是说这个集合中的数都可以表示成"g"的倍数，或者"a"和"b"的其他公约数的倍数。但是，只有最大公约数才是这个集合的元素。根据贝祖等式，有"g" = "sa" + "tb"。換言之，当"u" = "s"、"v" = "t"时得出"g"。任何其他的公约数都不是这个集合的元素，因为它们都不能被比它们大的"g"整除。相反地，"g"的任何倍数都属于这个集合，只要令"u" = "ms"、"v" = "mt"，便有：
所以，形如"ua" + "vb"的数的集合等于"g"的整数倍的集合。也就是说，任意两个数的线性和的集合等同于它们最大公约数的整数倍的集合。"a"和"b"的最大公约数叫做"a"和"b"的理想的生成元素。这个最大公约数的定义导出了兩個现代抽象代数的概念：主理想（由单个元素生成的理想）以及主理想整环（其每一理想都是主理想的整环）。
这个结果可以解决某些實際问题。例如，考虑两个容积分别为"a"和"b"的量杯，其中"a"和"b"為正整數。通过加入或倒去"u"倍第一个量杯的体积以及"v"倍第二个量杯的体积的液体，任何体积为"ua" + "vb"的液体都可以被量出（只要"ua" + "vb"為正數）。根據贝祖等式，凡是可以被量出的液体，其体积一定是"a"和"b"的最大公约数"g"的倍數。
贝祖等式的整数"s"和"t"可以通过扩展欧几里得算法算出。这个扩展算法在原有辗转相除法的基础上增加了两个递归等式：
算法开始时：
加上这兩个递归式后，当算法终止于"r" = 0，贝祖等式的整数"s"和"t"分别由"s"和"t"给出。
这个算法的正确性可以用数学归纳法来证明。假设递归至第"k"−1步是正确的，也就是假设：
在"j"小于"k"時皆成立。则第"k"步运算得出以下等式：
因为"r"和"r"被假定是正确的，所以可以用"s"和"t"表示：
整理后得到第"k"步的结果，和我们期望得到的结果一致：
整数"s"和"t"也可以用矩阵运算得出。辗转相除法的计算过程：
可以写作2×2的商矩阵乘以一个2维余数向量：
令M表示所有商矩阵的乘积：
这使辗转相除法化简为：
如要用"a"和"b"的线性和表示"g"，可將等式两边同时乘以矩阵M的逆矩阵。M的行列式等于(−1)，因为它等于商矩阵的行列式的乘积，而每一个的行列式都是−1。因为M的行列式不为零，最终的余数向量可以利用M的逆矩阵解出：
由上式可以得出"g" = (−1) ( "m" "a" − "m" "b")。
贝祖等式中的两个整数分别是"s" = (−1)"m"、"t" = (−1)"m"。矩阵法的效率可前文描述的辗转相除法的递归算法是相同的，每一步都有两次乘法和两次加法。
贝祖等式对辗转相除法的很多应用都很重要，如证明自然数的唯一分解性质假设数字"L"可以写成两个因数"u"和"v"的乘积，即"L" = "uv"。如果另一个数"w"与"u"互素的数也能整除"L"，那么"w"必须整除"v"，证明如下：如果"u"和"w"的最大公约数是1，则根据贝祖等式存在"s"和"t"使
两边都乘以"v"：
因为"w"整除等式右边，所以也应整除等式左边的"v"。这个结果叫做欧几里得引理。如果一个素数整除"L"那么它至少整除"L"的一个因数。如果一个数"w"互素于数列"a"、"a"、…、"a" 中的每一个数，则"w"也一定互素于它们的乘积"a" × "a" × … × "a"。
欧几里得引理足以证明每一个自然数的素数分解是惟一的。我们用反证法来证明，假设"L"可以分别分解成"m"个素数和"n"个素数，即：
根据假设，每个素数"p"都能整除"L"，因此它必须能够整除某個"q"；因为"q"也是一个素数，所以"p" = "q"。同理，对于每一个"p"都存在一个"q"与它相等。所以两种分解除了顺序不同以外是完全相同的。整数分解的惟一性在数学证明中有很多应用，下文将会提到。
丢番图方程是以亚历山大数学家丢番图的名字命名的一类方程，它的解被限制在整数范围。关于整数"x"和"y"的线性丢番图方程形如：
其中"a"、"b"、"c"是已知整数。这个方程可以写成关于"x"的同余式：
令"g"为"a"和"b"的最大公约数，a、b都能被g整除，故"ax" + "by"能够被"g"整除。所以，"c"一定能够被"g"整除，不然方程就无解。方程两边若同时除以 formula_8，方程就变成了贝祖等式：
其中"s"和"t"可以用扩展欧几里得算法求解。所以这个丢番图方程的一个解即是：
总体而言，丢番图方程如果有解，就一定有无数个解。只需要考虑两个解 (x, y) 和 (x, y)：
或者可以写成：
所以相邻两个解的"x"之间的差是formula_13，"y"之间的差是formula_14。这样，所有的解都可以表示成：
当"t"取遍所有整数时，方程所有的解都可以从 ("x", "y") 计算出来。如果限制為正整数解 ("x" > 0, "y" > 0) 的话，那么解的数量就可能是有限的。有時候，这种对解的限制使丢番图方程在未知数個數比方程數更多的情况下仍然能有唯一解，而在允許實數解的线性方程组中，这種情況是不可能的。
有限域是一个支持四种运算的数集。这四种运算也通稱為加法、减法、乘法、除法，跟一般的四則運算有相同的性质，如交换律、结合律和分配律。举例来说，使用同余可以让13个数字的集合 {0, 1, 2, …, 12} 构成一个有限域。在这个域中，任何数学运算（加减乘除）都归约成13的模，例如 5 × 7 = 35 mod 13 = 9。对于任意素数"p"，都可以定义这种有限域；使用更复杂的方法，也可以对素数"p"的"m"次方定义这样的有限域。有限域也叫做伽罗瓦域，其缩写為 GF("p") 或 GF("p")。
在这样一个有"m"个数的域中，任何非零元素"a"都存在惟一乘法逆 "a" 使"aa" = "a""a" ≡ 1 mod "m"。这可以通过解同余式"ax" ≡ 1 mod "m" 得出，或者也可以解与之等价的丢番图方程
这个方程可用扩展欧几里得算法解出（参见上文）。在RSA算法中，寻找乘法逆是非常重要的一步，它决定了使用哪个数来解密信息。虽然RSA算法不使用域而是使用环，扩展欧几里得算法仍然可以用来求乘法逆。欧几里得算法也被应用于纠错码，例如，它可以代替伯利坎普－梅西算法解基于有限域的BCH码和里德-所罗门码。
辗转相除法也可以用來解线性丢番图方程组。如在中国剩余定理中，整数可以表示成被"N"个互素的数"m"除留下的余数：
为了从"x"的"N"个余数"x"中确定"x"的值，我们将这些式子组合成单个线性丢番图方程，其中模数"M"是所有模数"m"的乘积，然后定义"M"如下：
也就是，"M"是除了"m"以外所有模数的乘积。接着是关键的一步，寻找"N"个数"h"使：
有了这些数"h"之后，整数"x"可以用下式从余数"x"中解出：
因为"h"是"M"的乘法逆，所以可以使用扩展欧几里得算法求出（见上一节）。
辗转相除法和连分数有着紧密的关系。计算连分数的过程如下：
其中每个式子的右边最后一项都等于下一个式子的左边项的倒数。所以前两个式子可以组合成：
第三个式子可以代入分母中的"r"/"r"：
每一步中，最后一项"r"/"r"都可以用下一个式子代换，直至最后一个式子，结果是：
在上文的例子中计算了GCD(1071, 462)，其中商"q"分别是2、3、7，所以分数 1071/462 可以写成如下连分数形式：
计算最大公约数是很多整数分解算法的重要步骤，如、Shor算法、以及。用辗转相除法算最大公约数效率非常高。而连分数分解法由于用到了连分数，所以也需要使用辗转相除法。
辗转相除法的计算效率已经被彻底研究过了。一个算法的效率可以用计算所需步数乘以每步计算的开销表示。加百利·拉梅于1884年指出，用辗转相除法计算两个数的最大公约数所需的步数不会超过其中较小数十進制下的位数"h"的5倍。因为每一步的计算开销通常也是"h"数量级的，所以辗转相除法的复杂度是"h"。
计算两个自然数"a"和"b"的最大公约数所需的步数可以表示为"T"("a", "b")。如果"a"和"b"的最大公约数是"g"，"a" = "mg"，"b" = "ng"，而"m"和"n"是两个互素整数，那么：
这可以通过在辗转相除法的计算过程中的每一步都除以"g"来证明。同样，当"a"和"b"同时乘以"w"时，计算步数不变："T"("a", "b") = "T"("wa", "wb")。所以，对于数值上相近的数，如T("a", "b")和T("a", "b" + 1)，计算步数可能相差很大。
根据辗转相除法的递归性质可以得出另一个公式：
其中，根據定义有"T"("x", 0) = 0。
假设用辗转相除法求自然数"a"和"b"（"a" > "b" > 0）的最大公约数需要"N"步，那么满足这一条件的"a"和"b"的最小值分别是斐波那契数"F"和"F"。这可以用数学归纳法证明。假设"N" = 1，"b"整除"a"，满足这一条件的"a"和"b"最小是"b" = 1、"a" = 2，正是"F"和"F"。现在假设这一规律对"M" − 1有效。一个需要"M"步的算法的第一步是"a" = "q""b" + "r"，第二步是"b" = "q""r" + "r"。因为算法是递归的，它需要"M" − 1 步才能算出 GCD("b", "r")，其中"b"和"r"的最小值是 "F" 和 "F"。所以"a"的最小值是当 "q" = 1 的时候，此时 "a" = "b" + "r" = "F" + "F" = "F"。1844年，加百利·拉梅发现这个证明标志着计算复杂性理论的诞生。这也是斐波那契数列的第一个实际应用。
这个结果也证明了辗转相除法的运算步骤不会超过较小数十进制下的位数的五倍。因为如果算法需要"N"步，那么"b"一定大于或等于"F"，也就是一定大于或等于"φ"，其中"φ"是黄金分割比。因为"b" ≥ "φ"，所以"N" − 1 ≤ log"b"。因为log"φ" > 1/5，("N" − 1)/5 "O"("h")次除法，其中"h"是较小数"b"在十进制下的位数。
辗转相除法的平均步骤数有三种不同的定义。第一种定义是计算已知自然数"a"和从0到"a" − 1范围内随机选取的自然数"b"的最大公约数所需的时间"T"("a")：
但是因为"T"("a", "b")在连续整数间变化非常剧烈，所以"T"("a")的值也会显得很杂乱。
为了解决这个问题，第二种定义规定τ("a")只要取遍其中所有和"a"互素的数即可：
在小于"a"的数中，有"φ"("a")个数与"a"互素，其中"φ"是欧拉函数。在这个定义中，τ("a")的函数值增长得平稳很多。
誤差項的增長率為O("a")，其中ε是无穷小量。公式中的常数"C"等于：
其中γ是欧拉-马歇罗尼常数，ζ′是黎曼ζ函数的导数。公式最左边的formula_29由两个独立的方法确定。
因为第一种定义可以通过用第二种定义的求和来完成：
所以也可以由以下公式近似：
其中Λ("d")是冯·曼戈尔特函数。
第三种定义"Y"("n")定义为从1到"n"间随机选取"a"和"b"（均勻分佈）时计算它们的最大公约数所需的平均步骤数：
将"T"("a")的近似公式代入，得到"Y"("n")的近似：
在辗转相除法的每一步中，商"q"和余数"r"都通过"r"和"r"求出：
所以每一步的计算开销主要与计算商"q"的算法有关，因为余数"r"可以很迅速地从"r"、"r"和"q"计算出来：
而计算一个"h"位整数的除法的算法复杂度是"O"("h"("ℓ"+1))，其中"ℓ"是商的位数。
作为对比，辗转相除法原先的版本使用的是减法，因此效率要慢很多。进行一次除法等同于进行"q"次减法（其中"q"是商）。如果"a"和"b"的比很大，计算出的商也很大，也就需要进行很多次减法。但在另一方面，计算出来的商在大多数情况下都是非常小的，除法中得出一个确定的商"q"的概率大约是formula_34。其中"u" = ("q" + 1)。比如，商是1、2、3、4的可能性分别是大约41.5%、17.0%、9.3%、5.9%。因为计算机计算减法要快于除法，特別是对于很大的数字，所以减法版本的辗转相除法的性能可以比得上除法版本。这也被运用于二进制最大公约数算法。
综合考虑算法需要的步数和每一步的计算开销，辗转相除法随两个数字"a"和"b"的平均位数成平方级的速度增长("h")。设"h"、"h"、…、"h"表示计算过程中的余数"r"、"r"、…、"r"的位数，因为算法的步数"N"随"h"线性增长，所以算法的运算时间为：
因为辗转相除法的高效率，它在实践中被广泛使用。作为对比，本段中介绍以下辗转相除法以外的其他最大公约数算法的效率。
计算两数"a"和"b"的最大公约数有一个效率很慢的算法：将"a"除以从2到"b"之间的每一个整数以计算出它们所有的公约数，其中最大的一个即是最大公约数。在这个算法中，步骤数随"b"线性增长，也就是随输入数字的位数呈指数级增长。另一个很低效的算法是计算出两个数的所有素因数（见上文），最大公约数等于所有公共素因数的乘积。但是整数分解算法效率极低，很多现代的加密系统甚至依靠这种低效率来防止资料被破解。
除了辗转相除法之外，也有一些高效的算法存在，如二进制最大公约数算法将除法操作替换成了二进制的移位，以进一步提高用计算机运算时的效率。但是，这种改变并没有降低算法的复杂度（仍然是"O"("h"²)），虽然它在计算机上确实比辗转相除法快些。也可以通过只检視"a"和"b"的前几位数来进一步提高效率，不过效果并不明显。二进制版的算法还可以扩展到其它进制，效率最多可以提升五倍。
对于超过25,000位数的大数，有一种改进使算法复杂度降低至平方级以下，如Schönhage、Stehlé、Zimmermann等人提出的算法。这些算法利用2×2的矩阵（见上文）。这些亚平方级的算法复杂度通常是。
如上文所述，辗转相除法最早用来寻找两自然数的最大公约数，但其实它也可以被推广至实数，甚至是多项式、二次整数和赫尔维茨四元数。在这些数系中，辗转相除法甚至被用来證明一个重要特性：惟一分解，即这些数系中的数能够被惟一地分解成不可約元素（素数在这些数系的对应物）。惟一分解是数论中很多证明的基础。
辗转相除法可以被应用至实数，如欧几里得在几何原本第10卷中所说的那样。算法的目的是计算出实数"g"，使已知实数"a"和"b"是它的整数倍："a" = "mg"、"b" = "ng"，其中"m"和"n"是整数。这也就找到了"a"和"b"的整数关系，即找到整数"s"和"t"使"sa" + "tb" = 0。欧几里得使用辗转相除法来处理不可通约的长度。
实数的辗转相除法和整数的算法有两个区别。第一，余数"r"是实数，虽然商"q"仍然是整数。第二，算法不能保证在有限步内结束。如果能在有限步内结束，那么分数是一个有理数，即：
于是我们可以写出它的有限连分数形式：。如果算法无法结束，那么是无理数，可以写成无限的连分数形式：。无限连分数的一个例子是：黄金分割比和2的算術平方根：。通常，算法能够结束的可能性是很低的，因为对于实数，几乎所有都是无理数。
如果算法不结束，也可以在第"k"步时终止计算，得到近似连分数。终止时的"k"越大，则近似越准确。连分数"m"/"n"的分子和分母互素并满足下式：
其中递归的初始值是。是在分母是"n"的数中最精确的有理数近似值：
只含有一个变量"x"的多项式可以和整数一样进行加法、乘法和分解為不可約多项式（也就是多项式中的“素数”）。两个多项式"a"("x")和"b"("x")的最大公约数"g"("x")定义为它们分解之后共有的不可約因式的乘积，这可以用辗转相除法进行计算。对于多项式的算法和整数的算法很相似，在每个步骤"k"，计算出满足以下递归式的商多项式"q"("x")和余数多项式"r"("x")：
其中"r"("x") = "a"("x")，"r"("x") = "b"("x")。所选择的商式必须能使"q"("x") "r"("x")的首项系數和"r"("x")的相等，这样才能保证每个余数的次数小于前一个余数（deg["r"("x")] < deg["r"("x")]）。因为非零多项式的次数是非负整数，并且在每一步都减小，所以辗转相除法的计算一定能在有限步内结束。最后一个非零余数即是两个多项式"a"("x")和"b"("x")的最大公约数。
例如，有如下两个四次多项式，都可以分解成两个二次多项式的乘积：
和
得到余数：
在下一步中，"b"("x")除以"r"("x")得到"r"("x") = "x" + "x" + 2。最终，"r"("x")除以"r"("x")得到的余数为0，所以"r"("x")是"a"("x")和"b"("x")的最大公约数，这和它们因式分解的结果相符合。
上文所述的很多应用也适用于多项式。辗转相除法可以解多项式的线性丢番图方程和中国剩余定理，也可以用来定义多项式的连分数展开式。
多项式的辗转相除法也有其他应用，如施图姆定理，一个用于计算多项式在给定区间内的实根个数的方法。这被应用于其他领域，如控制论的劳斯-赫尔维茨稳定性判据。
最后，多项式的系数不必局限于整数、实数、甚至复数。这些系数可以是其他域中的元素，如上文所述的有限域GF("p")。从辗转相除法得出的结论也可以直接推广至这类多项式。
高斯整数是满足α = "u" + "vi"的复数，其中"u"和"v"是普通整数，"i"是虚数单位（-1的平方根）。通过在高斯整数中定义辗转相除法，根据上文贝祖等式可以证明高斯整数的惟一分解。高斯整数的惟一分解性质在很多应用中都很重要，如计算勾股数或者证明费马平方和定理。辗转相除法用于这些应用很方便，但并非必不可少，一些定理也可以由其他方式证明。
对于两个高斯整数α和β的辗转相除法和普通整数只有两个区别。像整数一样，算法的第"k"步计算出商"q"和余数"r"：
其中"r" = α，"r" = β，每个余数都严格地小于前一个余数，|"r"| 复数，所以商"q"是透過對實際比例（如複數α/β）的实部和虚部取最近似整數來找出的。第二个区别就是需要定义复数比较大小的方法。所以我们定义一个范数函数"f"("u" + "v"i) = "u" + "v"，以将高斯整数"u" + "vi"转换成普通整数来比较大小。在每个步骤"k"中，余数的范数"f"("r")必须小于前一个余数的范数"f"("r")。因为范数是非负整数并且在每一步都减小，所以辗转相除法在有限步内一定能结束。最后一个非零余数即是α和β的最大公约数，即能同时整除α和β的整数中范数最大的一个。若把乘以±1或±i的所得結果考慮在內，那麼可以說α和β的最大公约数是唯一的。
很多其他应用如线性丢番图方程、中国剩余定理都適用于高斯整数，高斯整数的连分数也可以用辗转相除法定义。
如果一个支持两种二元运算（+ 和 ·）的元素的集合形成一个交换环"R"并且可以使用辗转相除法求最大公约数，那么这个集合叫做欧几里得整环。这两个二元运算不必是平常算数中的加法和乘法，它们可以是更广泛的概念，如群或幺半群中的运算。但是这些运算仍然需要遵守交换律、结合律、分配律。
推广之后的辗转相除法需要一个欧几里得函数，即一個将"R"映射到非负整数集合的函數"f"，使得对于"R"中非零元素"a"和"b"，"R"中存在"q"和"r"满足"a" = "qb" + "r"，"f"("r") < "f"("b")。例如上文中用于高斯整数的范数函数。这个函数"f"可以是数的绝对值或模，也可以是多项式的次数，只要辗转相除法计算过程中它的值不断减小就行，这样算法便能在有限步内结束。这非常依赖于非负整数的良序性，即每个非空的非负整数集合都有一个最小数。
任何欧几里得整环都满足算数基本定理：欧几里得整环中的数可以惟一分解。所以任何欧几里得整环都是惟一分解整环，但反之不然。欧几里得整环是GCD整环（任意两元素都存在最大公约数的整环）的子类。也就是说，在某些整环中，两元素存在最大公约数但却不能用辗转相除法计算。欧几里得整环都是主理想环，即其中每一个理想都是主理想，但并不是每个主理想环都是欧几里得整环。
欧几里得整环的惟一分解性质在很多场合都非常有用。例如，高斯整数的惟一分解性质可以方便地导出勾股数的公式，或者证明费马平方和定理。惟一分解性质也是加百利·拉梅于1847年基于约瑟夫·刘维尔的建议发表的证明费马最后定理的尝试中的关键部分。拉梅的尝试需要形如"x" + ω"y"的数的惟一分解性质，其中"x"和"y"是整数，ω = "e"是1的"n"次方根，即ω = 1。虽然这对于某些"n"成立（如"n"=3时的艾森斯坦整数），但在其他情况下并非总是正确的。惟一分解性质在分圆域的失效使恩斯特·库默尔发明了理想数的概念，随后理查德·戴德金创造了理想的概念。
二次整数环对于解释欧几里得整环很有帮助。二次整数是高斯整数的推广，高斯整数中的虚数单位"i"被替换成一个复数ω。二次整数的形式是"u" + "v"ω，其中"u"和"v"是整数，ω有两种形式，取决于参数"D"。如果"D"不等于四的倍数加一，那么：
如果"D"等于四的倍数加一，那么：
如果二次整数环有像上文用来比较高斯整数的那样的范数函数，那么它就是规范欧几里德整环。只有当"D" = −11, −7, −3, −2, −1, 2, 3, 5, 6, 7, 11, 13, 17, 19, 21, 29, 33, 37, 41, 57或73时，二次整数环才是规范欧几里德整环。"D" = −1和−3时的二次整数分别叫作高斯整数和艾森斯坦整数。
但如果范数函数"f"可以是任何欧几里得函数，那么使二次整数环是欧几里得整环的"D"的可能值到目前为止还不确定。是欧几里得整环但不是规范欧几里德整环的第一个例子（"D"=69）发表于1994年。温伯格於1973年证明，在广义黎曼猜想成立的前提下，"D">0时的二次整数环是欧几里得整环，當且僅當它是一个主理想环。
辗转相除法也可以应用至非交换环，如赫尔维茨四元数。令表示这样一个环中的两个元素。他们有右公约数"δ"如果。同样，他们有左公约数"δ"如果。因为乘法不符合交换律，也就有两个版本的辗转相除法，一个计算右公约数，一个计算左公约数。例如对于右公约数，辗转相除法求最大公约数的第一步可以写成：
其中ψ是商，ρ是余数。对于左公约数，第一步过程是：
不管是哪一种，这个过程都会重复到最大左公约数或者最大右公约数计算出，像在欧几里得整环中一样，的“大小”一定小于，并且對於只有有限种的可能大小，这样才能保证算法能够结束。
由辗转相除法得出的大多数结果都适用于非交换环。例如，贝祖等式表明最大右公约数可以表示成的倍数和的倍数的和，即，存在使：
对于最大左公约数，等式如下：
贝祖等式可以用来解非交换环的丢番图方程。
辗转相除法有三个性质保证它不会永远进行下去。第一，它可以写成一系列递归式：
其中每一个余数都比前一个余数小，|"r"| 超限序数时仍保持这种性质。
辗转相除法的一个重要推广是代数几何中格罗布纳基的概念。像前文所述，"a"和"b"的最大公约数"g" 是它们的理想的生成元素。也就是说，对任何整数"s"和"t"，存在另一个整数"m"使：
虽然这对一元多项式也成立，但是对多元多项式就不成立了。在多元多项式的情况下，生成元素的有限集合"g"、"g"……可以定义如下：
其中"s"、"t"和"m"是多元多项式。任何这样的多元多项式"f"可以表示成生成多项式的和加上惟一的余数多项式"r", 通常叫做多项式"f"的一般形式。
虽然商多项式"q"可能不惟一。这些生成多项式的集合就叫做格罗布纳基。