與數論的廝守05:gcd(a,b)=gcd(b,a mod b)的證明

\[ 設c=gcd(a,b),那麼a可以表示爲mc,b可以表示爲nc的形式。然後令a=kb+r,那麼我們就\\ 只需要證明gcd(b,r)=c即可。{\because}r=a-kb=mc-knc,{\therefore}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){
    if(!b) return a;
    return gcd(b,a%b);
}
//壓行之後:
int gcd(int a,int b){ return b?gcd(b,a%b):a; }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章