以下大部分来自《ACM/ICPC程序设计与分析》
已知:gcd(a,b) =gcd(b,a%b)
求整数a和b的最大公约数的欧几里得算法。作辗转相除如下:{\text{求整数a和b的最大公约数的欧几里得算法。作辗转相除如下:}} 求整数a和b的最大公约数的欧几里得算法。作辗转相除如下:
gcd(a,b)对应a=bq0+r1(r1<b){gcd(a,b)}\qquad \qquad {\text{对应}} \qquad \qquad a=bq_{0}+r_{1}\qquad (r_{1}<b)gcd(a,b)对应a=bq0+r1(r1<b)
gcd(b,r1)对应b=r1q1+r2(r2<r1) {gcd(b,r_1)}\qquad \qquad {\text{对应}} \qquad \qquad b=r_1q_{1}+r_{2}\qquad (r_{2}<r_1)gcd(b,r1)对应b=r1q1+r2(r2<r1)
gcd(r1,r2)对应r1=r2q2+r3(r3<r2) {gcd(r_1,r_2)}\qquad \qquad {\text{对应}} \qquad \qquad r_1=r_2q_{2}+r_{3}\qquad (r_{3}<r_2)gcd(r1,r2)对应r1=r2q2+r3(r3<r2)
gcd(r2,r3)对应r2=r3q3+r4(r4<r3) {gcd(r_2,r_3)}\qquad \qquad {\text{对应}} \qquad \qquad r_2=r_3q_{3}+r_{4}\qquad (r_{4}<r_3)gcd(r2,r3)对应r2=r3q3+r4(r4<r3)
    gcd(rn−2,rn−1)对应rn−2=rn−1qn−1+rn  (rn<rn−1)\;\; {gcd(r_{n-2},r_{n-1})} \qquad {\text{对应}} \qquad r_{n-2}=r_{n-1}q_{n-1}+r_{n} \;(r_{n}<r_{n-1})gcd(rn−2,rn−1)对应rn−2=rn−1qn−1+rn(rn<rn−1)
  gcd(rn−1,rn)对应rn−1=rnqn+rn+1(rn+1=0)\; {gcd(r_{n-1},r_{n})}\qquad {\text{对应}} \qquad r_{n-1}=r_{n}q_{n}+r_{n+1}\qquad (r_{n+1}=0)gcd(rn−1,rn)对应rn−1=rnqn+rn+1(rn+1=0)
gcd(rn,rn+1)对应rn=rn+1qn+1+rn+2此时rn+1=0,return    rn gcd(r_n,r_{n+1})\qquad {\text{对应}} \qquad r_n=r_{n+1}q_{n+1}+r_{n+2} 此时r_{n+1}=0,return \;\;r_ngcd(rn,rn+1)对应rn=rn+1qn+1+rn+2此时rn+1=0,returnrn
那么          gcd(a,b)=rn{\text{那么}} \qquad \qquad \;\;\;\;\; gcd(a,b)= r_n那么