埃及分數
阿新 • • 發佈:2018-07-15
\n rac symbol string num clas 步驟 可用 一個
真分數分解為埃及分數的思路可歸納如下:
(1) 分數的分子用a表示、分母用b表示,變量c用來存儲各個埃及分數的分母。
(2) 如果分母是分子的倍數,直接約簡成埃及分數。
此時,埃及分數的分母c=b/a;分子為1,即直接將變量a賦值為1。
(3) 否則分數中一定包含一個分母為(b/a)+1的埃及分數。
若分母不是分子倍數,則可以分解出一個分母為(b/a)+1的埃及分數,即變量c的值 為(b/a)+1。
(4) 如果分子是1,表明已經是埃及分數,不用再分解,結束。
因為若分數的分子a為1,說明此時的分數己經是埃及分數無須再分解,可結束循環。對於這種不受循環條件限制,當某一條件滿足時便可結束循環的情況,可用break語句實現。
- if (a==1)
- {
- printf("1/%ld\n", c);
- break; /*a為1標誌結束*/
- }
(5) 如果分子是3而且分母是偶數,直接分解成兩個埃及分數1/(b/2)和1/b,結束。因分母為偶數,所以變量b—定是2的倍數,對於分解出的分數1/(b/2)經過約分之後肯定能得到一個埃及分數。原分數分解為兩個埃及分數之後便可利用break語句結束循環。
- if(a==3 && b%2==0) /*若余數分子為3,分母為偶數,輸出最後兩個埃及分數*/
- {
- printf ("1/%ld + 1/%ld\n", b/2, b);
- break;
- }
(6) 從分數中減去這個分母為(b/a)+1的埃及分數,回到步驟(2)重復上述過程。
埃及分數