如何求最小公因數

求兩個或更多整數的最小公因數(Greatest Common Divisor, GCD)有幾種方法,以下是幾種常見的方法:

  1. 質因數分解法: 將每個數分解成質因數的乘積,然後找出所有共同出現的質因數,將它們相乘得到最小公因數。

  2. 長除法: 使用長除法將較大的數除以較小的數,直到餘數為0。然後取每一個除數的乘積作為最小公因數。

  3. 歐幾里得算法(Euclidean algorithm): 這是求兩個整數最小公因數的一種高效算法。算法的基本思想是:兩個整數a和b的最小公因數等於a除以b的餘數c和b之間的最小公因數。如果c=0,則b就是a和b的最小公因數。

    假設a > b,則有: gcd(a, b) = gcd(b, a mod b)

    其中,a mod b表示a除以b的餘數。

  4. 輾轉相除法: 這是歐幾里得算法的一種實現方式,它通過不斷用較大的數除以較小的數,直到不能整除為止,然後返回上一個除數。

    步驟如下:

    1. 如果a <= b,則最小公因數是a。
    2. 如果a > b,則最小公因數是b。
    3. 計算a mod b的值,並將其賦給a。
    4. 將b賦給a。
    5. 將a mod b賦給b。
    6. 重複步驟3-5,直到a和b相等,此時a就是最小公因數。
  5. 擴展歐幾里得算法: 擴展歐幾里得算法不僅可以找到兩個整數a和b的最小公因數,還可以找到一組整數x和y,使得ax + by = gcd(a, b)。

    步驟如下:

    1. 如果a <= b,則最小公因數是a。
    2. 如果a > b,則最小公因數是b。
    3. 計算x0 = 1, y0 = 0, x1 = 0, y1 = 1。
    4. 計算q = a / b,r = a % b。
    5. 如果r == 0,則算法結束,最小公因數是b,x = x0, y = y0。
    6. 計算x2 = x1, y2 = y1 - q * x2。
    7. 計算x1 = x0, y1 = y0。
    8. 計算x0 = x2, y0 = y2。
    9. 重複步驟4-8,直到r == 0。
  6. 使用輾轉相除法求解線性同餘方程組: 如果需要求解線性同餘方程組,可以使用輾轉相除法來找到一組解。

    例如,求解方程組: 3x ≡ 1 (mod 5) 4y ≡ 2 (mod 7)

    首先求出gcd(3, 5)和gcd(4, 7),然後使用擴展歐幾里得算法找到一組解。

在實際套用中,通常使用程式語言來實現這些算法來求最小公因數。例如,在Python中可以使用math.gcd()函式來求兩個整數的最小公因數。