其他分享
首页 > 其他分享> > 数论基础,欧几里得定理

数论基础,欧几里得定理

作者:互联网

定理 gcd(a,b)=gcd(b,a%b)

证明

设c=gcd(a,b),那么a可以表示为mc,b可以表示为nc的形式。然后令a=kb+r,那么我们就只需要证明gcd(b,r)=c即可。

∵r=a−kb=mc−knc,∴gcd(b,r)=gcd(nc,mc−knc)=gcd(nc,(m−kn)c),所以我们只需要证gcd(n,m−kn)=1即可。

设n=xd,m−kn=yd,那么m=kn+yd=kxd+yd,进而a=(kx+y)cd,b=xcd,

于是gcd(a,b)就可以表示为gcd((kx+y)cd,xcd)=cd,

如果要让它等于c,那么d=1,即gcd(n,m−kn)=1。

代码

int gcd(int a, int b) {
    return b ? gcd(b, a % b) : a;
}

 

标签:gcd,数论,欧几里得,nc,kn,yd,int,cd,定理
来源: https://www.cnblogs.com/PDY08/p/15160310.html