求兩個正整數之最大公因子的算法(輾轉相除法)
最大公約數是指能同時整除它們的最大正整數
基本原理:兩個數的最大公約數等於它們中較小的數和兩數之差的最大公約數。
就如有 a = 122, b = 54,a與b 的最大公約數也是54 與(122 - 54)的最大公約數;
即有:
122 54
68 54
54 14
40 14
......
2 0
代碼有:
int GreatestCommonDivisor(int a, int b)
{
int t;
if (a < b)
{
temp = a;
a = b;
b = t;
}
while (b != 0)
{
t = a % b;
a = b;
b = t;
}
return a;
}
求最小公倍數是可依靠最大公因數
設c是a與b的最大公因數
int LeastCommonMultiple (int a, int b)
{
int t = a * b /c;
return t;
}