代碼及註釋如下:
#include <stdio.h>
int GCD(int a,int b)//定義函數,用來計算最大公約數
{
return b==0?a:GCD(b,a%b);
//此處使用了遞歸,如果b=0,返回a為最大公約數,否則,壹直以b與a%b賦給函數,實現輾轉相除
}
int main()
{
int a, b ; //定義實參a, b
int answer ; //定義最後結果
scanf ( "%d%d" , &a, &b) ; //取a,b的值
answer = GCD (a, b) ; //把結果賦給answer
printf ( "%d與%d的最大公約數為%d\n" , a , b , answer ) ; //輸出結果
}
擴展資料:
輾轉相除法求最大公約數的原理:
因為對任意同時整除a和b的數u,有a=su,b=tu,它也能整除r,因為r=a-bq=su-qtu=(s-qt)u。
反過來每壹個整除b和r的整數v,有 b=sv , r=tv,它也能整除a,因為a=bq+r=svq+tv=(sq+t)v。
因此a和b的每壹個公因子同時也是b和r的壹個公因子,反之亦然。
這樣由於a和b的全體公因子集合與b和r的全體公因子集合相同,所以a和b的最大公因子必須等於b和r的最大公因子,這就證明了上邊的等式。即(a,b)=(b,r)。
因而,可以由此,得到兩個數的最大公約數。