• 欧几里得算法


    欧几里德算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。

    百度百科所言↑
    正如其所言,辗转相除法相信大家小学时便有所听闻
    就是设(a>b,)
    则有(gcd(a,b)==gcd(b,a)%(b))
    可以感性理解下为何
    严格的证明比较复杂,有兴趣者见下:

    假设其(gcd)(k),(z=a%b)

    则存在(x,y,q)使得(a=kx,b=ky,z=a+qb)

    (gcd(x,y)=1,z=a+qb=kx+q(ky)=k(x+qy))

    (gcd(b,z)=gcd(ky,k(x+qy)))(k)这个因数

    (gcd((x+qy),y)=c)

    存在(m,n)使得(x+qy=mc,y=nc)

    (x=mc-qy=mc-qnc=c(m-qn))

    (a=kx=kc(m-qn),b=ky=knc)

    (gcd(ab)=k=gcd(kc(m-qn),kcn)=kc)

    所以(kc=k,c=1,)(gcd((x+qy),y)=1)

    (gcd(b,z)=gcd(b,b)%(a)=k=gcd(a,b))

    证毕
    (↑↑↑非引用,本人自己打的)

    好了这样的话代码就比较好打了,递归下去就好了
    其中(b==0)(return) (a)就基本解决了
    好了上代码↓

    int gcd(int a,int b){
    	if(b==0)return a;
    	return gcd(b,a%b);
    }
    

    …………………………(怀疑这段代码出现的意义所在……)………………………………

    Reality&Imagine
  • 相关阅读:
    javascript Date.prototype
    Mac 安装node.js
    element-ui适配pad 遇到的问题
    GCD实现异步任务同步的两种方式
    颜色判断
    ARC下方法重复问题
    检查IDFA的方法
    mac 下安装ecplise
    注释使用
    Xcode 8.0 控制台打印问题解决办法
  • 原文地址:https://www.cnblogs.com/yang-RA-NOI/p/13435959.html
Copyright © 2020-2023  润新知