問題
如何求兩個數字的最大公約數?一般的想法是暴力,檢測1,2,······n(最小的一個數),分別檢測這些數中能被兩個數整除的最大的那個數。還有一種輾轉相除算法可求最大公約數
原理
例如 a=16,b=12
16除12=1餘4
下面 12當被除數,4當除數,即:
12除4=3餘0
那麼4就是最大公約數
也不用擔心兩個數誰除以誰的問題,因爲當12除16的時候,商爲0,餘數爲12,下一次 又回到了16除12.
代碼
void Get_GCD(int a,int b)
{
int r=a%b;
while(r>0)
{
b=a;
a=r;
r=a%b;
}
printf("%d\n",a);
}