分享

同余(十)——欧几里得辗转相除法

 一个大风子 2022-01-29

往期文章

同余(一)

同余(二)

同余(三)

同余(四)—书籍书号的小秘密

同余(五)——费马小定理

同余(六)——斐波那契数列

同余(七)——密码学中的应用

同余(八)——欧拉定理

同余(九)——孙子定理(中国剩余定理)

整数与整除问题  

导读

   欧几里得算法又称辗转相除法。可以用来求两个整数的最大公约数,两个多项式的最大公因式。在之前的文章《整除问题(二)》已经使用了这个算法。本期我们单独来研究它。

回顾

      从二年级学习带余数除法后,我们知道

7÷2=3……1

写成一般的形式:

      设m是非零整数,n是任意整数,则可以唯一确定整数q和r,

使得

         n÷m=q……r  (0≤r<|m|)

         n=m×q+r     (0≤r<|m|)

其中q和r分别称为商和余数。

引理   若有等式

              n=m×q+r          

则有(n,m)=(m,r)。

证明若p|m,p|r,  由得,p|n。这就是说m、r的公约数都是n、m的公数。

     反过来若p|n, p|m,则p一定整除它们的组合

              r =n-m×q

这就是说p是m、r的公数。由此可见,如果n、m有一个最大公数p,那么p也是m、r的最大公数。            

应用       

找1804与328的最大公约数,

      1804÷328=5……164

因此

      1804=5×328+164

可知

    (1804, 328)=(328,164)

继续进行上述的步骤

      328=2×164+0

所以

   (328,164=(164, 0)=164

   (1804, 328=164.

下面给出一般化的算法。

辗转相除法
















算法  设n,m是两个不全为0的整数,

        找出最大公因数(n, m).        

分析  

      我们可以假设,m≠0,这样通过连除我们能写出,

    n=q1×m+r1      (0≤r1<|m|)

    m=q2×r1+r2    (0≤r2 <|r1|)

    r1=q3×r2+r3      (0≤r3<|r2|)

    …  …                      …  …

只要余数不为0就继续写下去,从右边的不等式,我们可以看到一连串的余数形成一个严格递减数列

       m>|r1 |>|r2|> ……≥0

因此最多m步,0这个余数一定出现。

       rs-2=qs×rs-1+rs

       rs-1=qs+1×rs+0

这是我们知道

        (n, m)=(mr1),

        (m,r1)=(r1r2)

        (r1r2)=(r2r3),

         ……

        (rs-1rs)=(rs,0),

        (rs,0)=rs

得到

        (n, m)=rs;

                                                 □


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多