將真分數分解為埃及分數

2022-05-05 06:30:12 字數 1104 閱讀 3152

分子為1 的分數稱為埃及分數,現輸入乙個真分數,請將該分數分解為埃及分數。

如:8/11=1/2+1/5+1/55+1/110。

*問題分析與演算法設計

若真分數的分子a能整除分母b,則真分數經過化簡就可以得到埃及分數,若真分數的分子不能整除分母,則可以從原來的分數中分解出乙個分母為b/a+1的埃及分數。用這種方法將剩餘部分反覆分解,最後可得到結果。

*程式說明與注釋

/*安安注:對源程式作稍許修改,主要是新增了乙個外迴圈,可以直接計算多個真分數的埃及分數,按ctrl-c退出。具體的演算法我沒有認真看,有問題請提出,謝謝*/

#include

int main(void)

/*否則,輸出化簡後的真分數(埃及分數)*/

if(a==1)

else

printf("1/%ld + ",c);

a=a*c-b; /*求出餘數的分子*/

b=b*c; /*求出餘數的分母*/

if(a==3) /*若餘數為3,輸出最後兩個埃及分數*/}}

return 0;

}*執行結果

please enter a optional fraction (a/b): 1/6

it can be decomposed to: 1/6

please enter a optional fraction (a/b): 20/33

it can be decomposed to: 1/2+1/10+1/165

please enter a optional fraction (a/b): 10/89

it can be decomposed to: 1/9+1/801

please enter a optional fraction (a/b): 19/99

it can be decomposed to: 1/6+1/40+1/3960

please enter a optional fraction (a/b): 8/87

it can be decomposed to: 1/11+1/957

……(按ctrl-c退出)

華為OJ(將真分數分解為埃及分數)

題目 將真分數分解為埃及分數 描述分子為1的分數稱為埃及分數。現輸入乙個真分數 分子比分母小的分數,叫做真分數 請將該分數分解為埃及分數。如 8 11 1 2 1 5 1 55 1 110。介面說明 功能 將分數分解為埃及分數序列 輸入引數 string pcrealfraction 真分數 格式 ...

真分數轉埃及分數的和 貪心

分子為1的分數稱為埃及分數。現輸入乙個真分數 分子比分母小的分數,叫做真分數 請將該分數分解為埃及分數。例如6 7 1 2 1 3 1 42 題目分析 設原分數為a b,b除a得到c,c 1作為第乙個分母,拿a b 1 c的值做第二個待分解的數直到a 1或者b a 0 include include...

將整數分解為連續正整數之和

將乙個整數 n 分解為連續正整數之和,如 15 可以分解為 15 1 2 3 4 5 15 4 5 6 15 7 8 計算從 i 開始連續 k 個數之和 sum k 2 i k 1 2 當 sum n 時,有 k k 2 i 1 k 2 n 0 變形為 i 2 n k k 1 2。在 2,2 n k...