Golomb 算法與埃及單位分數
文耀光 1. 引言
如何將真分數分解成相異 「單位分數」(即分子為 1 的分數) 的問題, 作者曾於 「古埃及的 單位分數問題」 一文中已有論述, 所介紹的方法包括有 「埃及方法」 (Egyptian Method)、「斐 波那契法」(Fibonacci’s Algorithm) 及 「史都華法」(Stewart’s Method; 又稱 Splitting Al- gorithm) 等, 都是很簡單和有效的方法。 不過除了這些方法外, 由數學家 Golomb 於 1962 年 提出的另一個方法 (簡稱 Golomb 算法), 亦很值得為讀者介紹。 其法僅利用了一些初等數論 的結果, 便能夠把任意的真分數展成單位分數之和, 是一個很不錯的方法。 本文將會為大家介紹 Golomb 算法的理論背景、 證明和一些應用例子, 並比較 Golomb 算法與斐波那契法的優劣。
2. Golomb 算法
Golomb算法是建基於以下的定理:
定理1: 若 a, b, c 為整數, 不定方程 ax + by = c 有整數解的充要條件是 c 能被 gcd(a, b) 整除。
推論1: 若 a, b 為互質正整數, 則存在整數 x, y 使得 ax − by = 1。
Golomb算法: 設 a, b 為互質正整數, 且 a < b 。 分數 a/b 可用以下的步驟分解成若干 個相異單位分數之和:
(步驟一) 求滿足不定方程 ax − by = 1 的整數解 m, n, 而 m 為可能解中的最小正整 數。 把 a/b 記作:
a b = 1
bm + n m 若 n = 1, 則分解完成。 不然, 要進行步驟二。
(步驟二) 仿照步驟一把 mn 分解成一個單位分數及另一個分數。 重複此步驟, 直至所有的 分數都化成單位分數為止。
證明: 由於 gcd(a, b) = 1, 根據推論一可知存在整數 x, y 使得 ax − by = 1。 若只取正數 的 x, 則根據最小自然數原理, 必定存在最小正整數 m 及其對應的整數 n 使得 am − bn = 1。
24
Golomb算法與埃及單位分數 25 因此 ab = ambm = bm1 + mn 。 再由 gcd(a, b) = 1 及 0 < a < b, 易知 n < m, 且引用定理一可 推出 gcd(m, n) = 1。 現在要進一步證明 m < b, 才可以肯定有限次執行步驟二之後, 能將原 分數展成互異的單位分數之和。證明可以採用反證法進行如下:
情況一: 若 m = b, 那麼由 am − bn = 1 及定理一推出 m 整除1, 但 m = b 及 b > 1, 故不可能。
情況二: 若 m > b, 那麼存在正整數 s 使得 m = b + s。 但 a(m − b) − b(n − a) = 1, 故知 s 與 n − a 是滿足方程 ax − by = 1 的整數解, 且 s 比 m 更小, 因此 m 不可能是解中 的最小正數, 故有矛盾。
由以上證明顯示, 經 Golomb 法所得的單位分數之分母, 會構成一嚴格單調下降的數列, 此點可在下述例子中更清楚看到。
例1: 把 3/7 分解成單位分數之和。
解:
3
7=1 + 2 × 7 7 × 5 = 1
35 +2
5 (∵3 × 5 − 7 × 2 = 1)
= 1
35 +1 + 5 5 × 3 = 1
35+ 1 15+1
3 (∵2 × 3 − 5 = 1) 例2: 把 5/121 分解成單位分數之和。
解: 5
121=1 + 121 × 4 121 × 97 = 1
11737 + 4
97 (∵5 × 97 − 121 × 4 = 1)
= 1
11737+ 1 + 97 × 3 97 × 73 = 1
11737+ 1
7081 + 3
73 (∵4 × 73 − 97 × 3 = 1)
= 1
11737+ 1
7083+1 + 73 × 2 73 × 49 = 1
11737+ 1
7081+ 1 3577+ 2
49 (∵3 × 49−73×2 = 1)
= 1
11737+ 1
7083+1+73×2 73×49 = 1
11737+ 1
7081+ 1
3577+ 1+49
49×25 (∵2×25−49×1 = 1)
= 1
11737+ 1
7081 + 1
3577 + 1
1225 + 1 25 如果使用斐波那契法, 以上兩題的答案將會是:
3 7 = 1
3 + 1 11+ 1
231
及 5
121 = 1 25+ 1
757+ 1
763309+ 1
873960180913+ 1
1527612795642093418846225, 明顯比 Golomb 法所得的分母較大。
26 數學傳播 27卷2期 民92年6月
3. 算法分析及比較
由上述證明可見, Golomb 算法的最大分母為 bm, 而 m < b, 故知展開時的最大分母不 會大於 b(b − 1)。 另外, 由於 am − bn = 1, m < b 及 a < b, 可知 n < a。 因此展開後的項 數不會大於 a。 根據 Bleicher 與 Erd¨os 的分析, 雖然斐波那契法的展開項數亦不會大於 a, 但 所得的最大分母是以指數增長 (exponential growth) 的, 故其所求得之分母一般會比較大。
下表總結了一些測試結果1, 希望可以深化讀者對這兩個算法的認識。
表一: Golomb算法的測試結果 表二: Fibonacci法的測試結果 例子 最大分母值 總項數
4/23 138 2
5/121 11737 5
17/101 606 2
19/123 1599 3
59/121 9680 21
20/46201 971232571 20
21/23 253 11
例子 最大分母值 總項數
4/23 138 2
5/121 > 1.5 × 1024 5
17/101 606 2
19/123 8323 3
59/121 20328 4
20/46201 > 1.3 × 1056 5
21/23 644046 5
4. 結語
對任意真分數 a/b 而言, 由於引用 Golomb 算法展成單位分數之和後, 其最大分母不會 大於 b(b − 1), 而涉及的項數亦不大於 a, 故一般比斐波那契法較佳。 不過要徹底解決最優分解 問題: 即要求所得的單位分數展開式, 其項數或最大分母比其他可能解為小, 目前仍有待數學家 進一步的努力。
參考文獻
1. Bleicher Beck & Crowe, Excursions into Mathematics, Massachusetts: A K Peters, 2000.
2. Bleicher & Erdos, Denominators of Egyptian Fractions, Journal of Number Theory, 8(1976), 157-168.
3. M. N. Bleicher, A New Algorithm for the Expansion of Egyptian Fractions, Journal of Number Theory, 4(1972), 342-382.
4. S. W. Golomb, An Algebraic Algorithm for the Represenation Problems of the Ahmes Papyrus, American Mathematics Monthly, 69(1962), 785-786.
5. 文耀光, 「古埃及的單位分數問題」, 數學傳播, 26 卷 4 期, 民 91 年 12 月。
6. 文耀光、 吳銳堅、 梁志強,「基礎數學引論」, 香港教育圖書公司, 2000。
—本文作者現任職於香港教育學院數學系—
1 測試是採用了 Bleicher (1972) 論文中提及的例子, 不過其文章出現的錯誤已在表二中作出修訂。