3.2 辗转相除法
带余数除法的一个重要推广就是下面的辗转相除法,亦称Euclid算法,它有十分重要的理论和应用价值.
定理4(辗转相除法)设u0,u1是给定的两个整数,u1≠0,u1|/u0.我们一定可以重复应用定理1得到下面k+1个等式:
以上的算法就称为辗转相除法或Euclid算法.
证对u0,u1应用定理1,由u1|/u0知必有第一式成立.同样地,如果u2|/u1就得到第二式;如果u2|u1就证明定理对k=1成立.继续这样做,就得到
|u1|>u2>u3>…>uj+1>0
及前面j个等式成立.若uj+1|uj,则定理对k=j成立;若uj+1|/uj,则继续对uj,uj+1用定理1.由于小于|u1|的正整数只有有限个以及1整除任一整数,所以这过程不能无限制地做下去,一定会出现某个k,要么1<uk+1|uk,要么1=uk+1|uk.证毕.
在下节我们将分别应用带余数除法和辗转相除法来建立最大公约数理论.下面的定理是后一途径的基础,它由定理4立即推出,所以先在这里证明.
定理5在定理4的条件和符号下,我们有
(i)uk+1=(u0,u1),即最后一个不等于0的余数uk+1就是u0和u1的最大公约数;(6)
(ii)d|u0且d|u1的充分必要条件是d|uk+1;
(iii)存在整数x0,x1,使
uk+1=x0u0+x1u1,(7)
即两个整数的最大公约数一定可表为这两个整数的整系数线性组合.
证利用2定理8的(i)和(iv),从式(5)的最后一式开始,依次往上推,可得
uk+1=(uk+1,uk)=(uk,uk-1)=(uk-1,uk-2)=…=(u4,u3)=(u3,u2)=(u2,u1)=(u1,u0),(8)
这就证明了(i).利用2定理1的(ii)和(iii),从式(5)立即推出(ii).由式(5)的第k式知uk+1可表示成uk-1和uk的整系数线性组合,利用式(5)的第k-1式可消去这个整系数线性表示式中的uk,得到uk+1表示为uk-2和uk-1的整系数线性组合.这样,依此利用式(5)第k-2,k-3,…,2,1式,就可相应地消去uk-1,uk-2,…,u3,u2,最后得到uk+1表示为u0和u1的整系数线性组合,这就证明了(iii).如何求出x0,x1可见习题三的第二部分.
辗转相除法在数论中十分有用,例如,在连分数(见第七章1例2)中.下面来举两个例子.
例6求198和252的最大公约数,并把它表为198和252的整系数线性组合.
(252,198)=(198,54)=(54,36)=(36,18)=18.
例7设m,n是正整数.证明
(2m-1,2n-1)=2(m,n)-1.
证不妨设m≥n.由带余数除法得
m=q1n+r1,0≤r1<n.
我们有