2016-11-30 68 views
-3

我有這個問題,我們試圖找到使用斐波那契算法的埃及分數。對於分子,它總是必須等於一。那麼,我們必須確定底部是否是一個實際的數字。埃及分數使用斐波那契算法

我們已經從用戶2個輸入中,他們給我們一個號碼(必須爲正數)

我已經找到了一種方法來確定合理數量的底部號碼是否是一個實際的數..(一個很好的類似的例子:Practical Number)但我迷失在如何將其轉換爲埃及分數。

在說明中,它指出我們應該根據我們的fractor列表找到最大的分數。例如:如果有理數是5/8,則8的因子是[1,2,4]。可以從中減去的最大部分是1/2。

我甚至不知道從何轉換開始。我只知道,如果從用戶輸入第二個數字是實際數字,我必須計算相當於埃及分數..

輸出應該similiarly這個運行:

Num1 : 7 
Num 2: 8 
Denomiator factors: [1,2,4,8] 
Num 2 is a practical number. 
Fraction can be represented by: 
1/2 + 1/4 + 1/8 

開始任何幫助將是讚賞。我真的理解了這個概念以及它的要求 - 我只是停留在從哪裏開始。示例代碼會很有幫助。

+1

歡迎StackOverflow上。請閱讀並遵守幫助文檔中的發佈準則。 [在主題](http://stackoverflow.com/help/on-topic)和[如何提問](http://stackoverflow.com/help/how-to-ask)適用於此處。 StackOverflow不是一個編碼或教程服務。 – Prune

+0

你卡在哪裏?你已經非常接近地描述你的描述中的整個算法。 – Prune

回答

0

好吧......我要用你的例子7/8來回應你剛纔告訴我們的。

  1. 開始與所述部分的兩個部分組成:NUMER = 7,DENOM = 8
  2. 確定DENOM是一種實用的號碼;這包括返回它的因素,[1,2,4,8]。
  3. 按順序排列因子;如果保證小數總是小於1,則可以放棄因子。
  4. 遍歷列表,一次一個因素,建立您的埃及分數的條款。

僞代碼:

for factor in factor_list: 
    weight = denom/factor 
    while weight < numer: 
     # Add the fraction 1/factor to the solution; 
     # reduce numer by weight (subtracting that fraction) 
# When you exit these loops, 
# numer should be 0, and 
#  you should have accumulated all of 
#  the "1/factor" fractions in your solution.