zoukankan      html  css  js  c++  java
  • 欧几里德算法的证明

    欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。其计算原理依赖于下面的定理:
    定理:gcd(a,b) = gcd(b,a mod b) (a>b 且a mod b 不为0)
    证明:a可以表示成a = kb + r,则r = a mod b
    假设d是a,b的一个公约数,则有
    d|a,d|b,而r = a - kb,因此d|r
    因此d也是(b,a mod b)的公约数
    因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证

    【来自百度百科】上述“d|a,d|b,而r = a - kb,因此d|r”这一步的证明:
    d|a,d|b则有如下两点:
    a/d=n、b/d=m。其中n、m是整数。则(xa+yb)/d=nx+my.也即:d|(xa+yb)。其中x、y是整数。
     
     
    ------------------分割线----------分割线------------分割线----------分割线-----------------------
     
    下面是另一个证明过程,同样是出自百度百科。
     
    设两数为a、b(a>b),用gcd(a,b)表示a,b的最大公约数,r=a  mod b ,  是a除以b的余数,k为a除以b的商,即a÷b=k.......r。
    辗转相除法即是要证明gcd(a,b)=gcd(b,r)。
    证明过程如下:
    第一步:令c=gcd(a,b)≠0,则设a=mc,b=nc。   (注意:因为a与b的最大公约数是c,所以m与n必然互质。)
    第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c
    第三步:根据第二步结果可知c也是r的因数
    第四步:可以断定m-kn与n互质,因此c也是b与r的最大公约数。
    (关于“m-kn与n互质”的断定,可以用反证法来证明:假设“m-kn与n不互质”,则有m-kn=xd,n=yd (d>1),于是m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)cd,b=nc=ycd,则a与b的一个公约数cd>c,故c非a与b的最大公约数,与前面假设c=gcd(a,b)互相矛盾,所以“m-kn与n不互质”不成立。)
    从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。
    证毕。
    注意:以上步骤的操作是建立在刚开始时r≠0的基础之上的。即m与n亦互质。
     
     
     
  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/code.html
Copyright © 2011-2022 走看看