埃及分數(EgyptFraction)

2021-08-15 03:13:28 字數 731 閱讀 1046

/*思路:設b=a*c+d

b/a=c+d/a1/(c+1)

即:1/c+1 為a/b所包含的最大真分數。

設e=c+1,由於a/b-1/e=(a*e-b)/b*e,則最大真分數減去最大埃及分數後得到

(a*e-b)/b*e,該真分數可能存在公因子,需要化簡,可以將分子分母同時除以

最大公約數

演算法:egyptfraction(a,b)

輸入:真分數的分子a和分母b

輸出:最少的埃及分數之和

1.e=b/a+1;

2.輸出1/e;

3.a=a*e-b b=b*e

4.求a和b的最大公約數r,如果r不為1,則將a和b同時除以r

5.如果a=1,則輸出1/b,演算法結束;

否則轉步驟1重複執行

*/

#includevoid egyptfraction(int a,int b);

int commonfactor(int m,int n);

int main()

void egyptfraction(int a,int b)

}while(a>1);

printf("1/%d\n",b);

return ;

} int commonfactor(int m,int n)

return n;

}

埃及分數式

金字塔的故鄉埃及也是數學的發源地之一,古埃及數系中,記數常採用分子為1的分數,稱為 埃及分數 人們研究較多且頗感興趣的問題是 把給定整數或分數分解為埃及分數之和,分解與優化往往是乙個煩瑣艱辛的過程 例如對5 121,可以分解為 為了盡可能減少分解項數,1969年數學家布雷策在 數學遊覽 中給出了以下...

貪心 埃及分數

把乙個真分數表示為埃及分數之和的形式。所謂埃及分數,是指分子為1的分數。如7 8 1 2 1 3 1 24。乙個真分數a b,要尋找其最大的1 c,那麼很容易想到的方法是列舉。但是列舉法效率不高,所以這裡採用貪心演算法。a b肯定為 1的數字,那麼 c b a 既可以理解為b比a大多少倍,那麼顯然餘...

貪心法 埃及分數

古代埃及人在進行分數運算時。只使用分子是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 貪心法,則是要讓乙個真分數被埃及分...