最大公約數和最小公倍數的算法
一般常見的算法有:求差判定法,歐幾里得算法,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);
}
總結:後續會把剩餘的兩種求最大公約數的算法補齊