欧几里得算法证明

求证:gcd(a,b)=gcd(b,a%b)

a,b的最大公约数,就是b,a%b的最大公约数。

 

第一步求证:

公约数cdcommon divisor)cd(a,b)=cd(b,a%b)

 

a>b a=kb+r (k是整数,r=a%b) (1)

da,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)


第二步求证:

最大公约数gcdgreatest common divisorgcd(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=0gcd(a,b)=a

所以:得到递归式:

gcd(a,b)=a          (b==0)

gcd(a,b)=gcd(b,a%b)  (b!=0)

 

扩展欧几里得证明:
https://www.zybuluo.com/samzhang/note/541890 

 

posted @ 2024-06-13 11:01  flatten  阅读(85)  评论(0)    收藏  举报