求最大公約數,最小公倍數算法

最大公約數和最小公倍數的算法

一般常見的算法有:求差判定法,歐幾里得算法,Stein算法。
這邊重點介紹歐幾里得算法,就是常說的輾轉相除法,是經典的求解最大公約數的算法。

輾轉相除法求最大公約數:
算法的基本思想是:假設 a > b,則餘數 r = a % b,若餘數 r 爲 0,則 b 即爲所求的數;若餘數 r不爲 0,則互換:置a <— b,b<— r,並返回上一步,直到餘數是0,則除數就是最大的公約數。

int maxcomdiv(int num1,int num2)
{
	//如果num1小於num2,互換。始終保持num1爲大的值
	if(num1 < num2)
	{
		int tmp = num2;
		num2 = num1;
		num1 = tmp;
	}

	int r = num1 % num2;
	while(r)
	{
		num1 = num2;
		num2 = r;
		r = num1 % num2;
	}
	return num2;
}

最小公倍數的求解:
算法的基本思想是:最小公倍數 * 最大公約數 = 兩個數的乘積。

int mincommul(int num1,int num2)
{
	return num1 * num2 / maxcomdiv(num1,num2);
}

總結:後續會把剩餘的兩種求最大公約數的算法補齊

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