輾轉相除法 求最大公約數

問題

  如何求兩個數字的最大公約數?一般的想法是暴力,檢測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);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章