1. 程式人生 > >埃及分數分解

埃及分數分解

設a、b為互質正整數,a<b 分數a/b 可用以下的步驟分解成若干個單位分數之和:

步驟一: 用b 除以a,得商數q1 及餘數r1。(r1=b - a*q1)

步驟二:把a/b 記作:a/b=1/(q1+1)+(a-r)/b(q1+1)

步驟三:重複步驟2,直到分解完畢

3/7=1/3+2/21=1/3+1/11+1/231

13/23=1/2+3/46=1/2+1/16+1/368

以上其實是斐波那契提出的一種求解埃及分數的貪心演算法,準確的演算法表述應該是這樣的:

設某個真分數的分子為a,分母為b;

把b除以a的商部分加1後的值作為埃及分數的某一個分母c;

將a乘以c再減去b,作為新的a;

將b乘以c,得到新的b;

如果a大於1且能整除b,則最後一個分母為b/a;演算法結束;

或者,如果a等於1,則,最後一個分母為b;演算法結束;

否則重複上面的步驟。

備註:事實上,後面判斷a是否大於1和a是否等於1的兩個判斷可以合在一起,及判斷b%a是否等於0,最後一個分母為b/a,顯然是正確的。