求证:gcd(a,b)=gcd(b,a%b)
a,b的最大公约数,就是b,a%b的最大公约数。
第一步求证:
公约数cd(common divisor)cd(a,b)=cd(b,a%b)
设a>b 则a=kb+r (k是整数,r=a%b) (1)式
设d是a,b的公约数,也就是d能被a整除,也能被b整除。
(1)式除所d 得:a/d=kb/d+r/d
因为a/d 和kb/d是整数,所以r/d也是整数,
所以d也是r的约数,所以d也是b,r的公约数。
所以a,b的公约数集合就是 b,a%b的公约数的集合。
cd(a,b)=cd(b,a%b)
第二步求证:
最大公约数gcd(greatest common divisor)gcd(a,b)=gcd(b,a%b)
因为:cd(a,b)=cd(b,a%b)
所以:max{cd(a,b)}=max{gcd(b,a%b)}
所以:gcd(a,b)=gcd(b,a%b)
第三步结论:
因为:b=0时gcd(a,b)=a
所以:得到递归式:
gcd(a,b)=a (b==0)
gcd(a,b)=gcd(b,a%b) (b!=0)
标签:kb,a%,gcd,欧几里得,最大公约数,cd,算法,公约数,证明 From: https://www.cnblogs.com/flatte/p/18245482