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亦互质。
     
     
     
  • 相关阅读:
    java中怎么解决路径中文的问题
    Json
    ajax
    MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法
    关于web.xml的格式
    关于RuntimException
    JNDI
    Dreamweaver使用过程的小技巧
    web-service客户端与服务器端的连接
    Python3
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/code.html
Copyright © 2011-2022 走看看