古代埃及人在進行分數運算時。只使用分子是1的分數。因此這種分數也叫做埃及分數,或者叫單分子分數。
例如:7/8=1/2+1/3+1/24貪心法,則是要讓乙個真分數被埃及分數表示的個數最少,每次選擇不大於真分數的最大埃及分數乙個真分數的埃及分數表示並不唯一
7/8也可以有如下表示:
7/8=1/8+1/8+1/8+1/8+1/8+1/8+1/8+1/8
設a為分子,b為分母,c為a/b,d為a%b
b=a*c+d——》b/a=c+d/a,因為d是餘數所以d一定小於a,則d/a<1
所以b/a從而得到a/b>1/(c+1),這裡的1/(c+1)就是可以選擇的最大埃及分數
輸入:真分數的分子a和分母b
輸出:最少個數的埃及分數相加
e=b/a+1 (這裡的b/a代表上述內容的c)
輸出1/e
a=a×e-b,b=b×e
求a,b的最大公約數temp,若temp大於1則a=a/temp,b=b/temp
若temp=1,輸出1/b,演算法結束,否則重複轉去執行步驟1
#include
using
namespace std;
void
egyptfraction
(int a,
int b)
;int
commfactor
(int a,
int b)
;//求最大公約數
intmain()
void
egyptfraction
(int a,
int b)
}while
(a!=1)
; cout<<
1<<
"/"<}int
commfactor
(int a,
int b)
int r;
dowhile
(r!=0)
;return a;
}
貪心 埃及分數
把乙個真分數表示為埃及分數之和的形式。所謂埃及分數,是指分子為1的分數。如7 8 1 2 1 3 1 24。乙個真分數a b,要尋找其最大的1 c,那麼很容易想到的方法是列舉。但是列舉法效率不高,所以這裡採用貪心演算法。a b肯定為 1的數字,那麼 c b a 既可以理解為b比a大多少倍,那麼顯然餘...
真分數轉埃及分數的和 貪心
分子為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...
埃及分數式
金字塔的故鄉埃及也是數學的發源地之一,古埃及數系中,記數常採用分子為1的分數,稱為 埃及分數 人們研究較多且頗感興趣的問題是 把給定整數或分數分解為埃及分數之和,分解與優化往往是乙個煩瑣艱辛的過程 例如對5 121,可以分解為 為了盡可能減少分解項數,1969年數學家布雷策在 數學遊覽 中給出了以下...