埃及分數式

2021-07-25 20:35:02 字數 2348 閱讀 5319

金字塔的故鄉埃及也是數學的發源地之一,古埃及數系中,記數常採用分子為1的分數,稱為「埃及分數」;

人們研究較多且頗感興趣的問題是:

把給定整數或分數分解為埃及分數之和,分解與優化往往是乙個煩瑣艱辛的過程;

例如對5/121,可以分解為:

為了盡可能減少分解項數,2023年數學家布雷策在《數學遊覽》中給出了以下優化的三項分解式:

同時布雷策證明了:5/121不可能分解為兩個埃及分數之和

從項數來說,上述三項分解式不可能再優化了,但對最大分母來說,布雷策的分解式並不是最優的,我國兩位青年數學愛好者於2023年發現:

這4個分解式都比布雷策的結論要優,按通常約定分解式中不得包含與待分解分數同分母的埃及分數,顯然應把第3個分解式排除在外,因此,現在所知把5/121分解為3個埃及分數的最小分母為1089;

那麼,分解5/121為3個埃及分數之和,其最大分母能否小於1089呢?我們可以通過程式設計來探索;

1.說明:

設指定的分數m/d的3個埃及分數的分母分別為a、b、c(a< b< c),最大分母不超過z,通過二重迴圈實施列舉;

確定a迴圈的起始值a1與終止值a2為:

b迴圈起始取a+1,終止取z-1;

對於a、b二重迴圈的每一組a、b,由1/c=m/d-(1/a+1/b)即可確定:

計算x=abd,y=mab-d(a+b);

如果y>0且y整除x,即得整數c,此時如果c>b且c!=d,即得分解為3個埃及分數的分數式,列印輸出後退出內迴圈,繼續尋找;

2.程式設計:

#includeint main()

if(e==1 && c<=z && c>b && c!=d)

}printf("共上述%d個分數式\n",n);

}

3.程式執行示例及其注意事項:

確定分數m/d,請輸入m,d:5,121

請確定分母的上限:1100

把分數5/121分解為三個埃及分數之和:

no1:5/121=1/27+1/297+1/1089

no2:5/121=1/33+1/99+1/1089

no3:5/121=1/45+1/55+1/1089

共上述3個分數式

這樣,我們通過程式設計探索得到:

結果中的最後乙個分解式是程式設計探索到的乙個新的最優分解式;

有資料指出,如果把5/121分解為4個埃及分數之和,其分母能否小於1089呢?對於這一還沒有定論的分解問題,我們繼續應用程式設計進行探索;

1.說明:

設指定的分數m/d的4個埃及分數的分母分別為a、b、c、e(a< b< c< e),最大分母不超過z,通過三重迴圈實施列舉;

確定a迴圈的起始值a1與終止值a2為:

b迴圈起始取a+1,終止取z-2;

c迴圈起始取b+1,終止取z-1;

對於a、b、c三重迴圈的每一組a、b、c,由1/e=m/d-(1/a+1/b+1/c)即可確定:

計算x=abcd,y=mabc-d(ab+bc+ca)

如果y>0且y整除x,即得整數e,此時如果e>c且e!=d,即得分解為4個埃及分數的分數式,列印輸出後退出內迴圈,繼續尋求;

2.程式設計:

#includeint main()

if(f==1 && e<=z && e>c && e!=d)

}printf("共上述%d個分數式\n",n);

}

3.程式執行示例及其注意事項:

確定分數m/d,請輸入m,d:5,121

請確定分母的上屆:1000

把分數5/121分解為4個埃及分數之和:

no1:5/121=1/28+1/462+1/484+1/726

no2:5/121=1/30+1/220+1/484+1/726

no3:5/121=1/33+1/120+1/605+1/968

no4:5/121=1/33+1/132+1/484+1/726

no5:5/121=1/36+1/99+1/484+1/726

no6:5/121=1/44+1/66+1/484+1/726

共上述6個分數式

注意:從以上6個分解式可知,把5/121分解為4個埃及分數之和,最優分母為726

以上兩個程式並不限於關於5/121的分解,其他分數或整數(輸入時分母d=1)的埃及分數式,請執行程式搜尋;

貪心 埃及分數

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

埃及分數(EgyptFraction)

思路 設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,該真分數可能存在公因子,需要化簡,可以將分子分母同時除以 最大公約數 演算法 egyptfr...

貪心法 埃及分數

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