求兩個整數a,b的最大公約數可用展轉相除法獲得,其具體證實以下:假設a>bcode
假設a=bt+r,即證實gcd(a,b)=gcd(b,r),設gcd(a,b)=c,a=mc,b=ncclass
r=a-bt=mc-ntc=(m-nt)c,則只需證實m-nt與n互素gc
反證法:假設m-nt與n不互素,則m-nt=xd,n=yd(d>1),則a=mc=(nt+xd)c=(ytd+xd)c=(yt+x)dc,b=nc=ydc,則while
gcd(a,b)=dc,與已知條件相悖,故m-nt與n互素,故gcd(b,r)=c=gcd(a,b)co
代碼以下:return
int gcd(int a, int b) //a>b { int c; do { c = a % b; a = b; b = c; }while( c != 0); return a; }