2013-10-02 27 views
-2

的首要因素,我試圖寫一個給定功能的Int大於一給所作的素因子(含重複),這個數字生成數

例的非減退名單:n = 12中,輸出應該是[2,2,3]

我不知道從哪裏開始。

+1

瞭解此:http://www.haskell.org/haskellwiki/99_questions/Solutions/35 – Sibi

+2

有點網絡搜索會找到你的鏈接西比給你。如果您仍然無法執行此操作或瞭解解決方案,請向我們展示您嘗試的內容,我們將會更好地提供幫助。 – mhwombat

+1

有關使用素數編程的問題,我在我的博客中謙虛地推薦[本文](http://programmingpraxis.com/essays),其中包括用於分解整數的Haskell代碼。 – user448810

回答

2

對於你想做什麼,當然有很好的算法,所以簡單的谷歌搜索將真正解決這個問題。

但是,我想向您展示一個可能對未來有所幫助的簡單思考過程。

由於因素都出現在升序排列,可能會:

  1. 開始用最低的黃金(2)。
  2. 檢查數字是否可以除以它。如果可以做到這一點,回去
  3. 如果不符合,下一任接替2,回到2.

現在,很明顯,最大的黃金你會檢查是你開始使用的數字。但是,基本的乘法公理指出,如果一個數字可以通過a可分爲:

n/a = b 

然後,它也可以通過b分!你可以用這個事實來進一步縮小檢查範圍,但是我會留給你去計算(或谷歌)的上限。

實際的實現當然是你家庭作業的一部分,因此提供代碼在這裏不是一個明智的想法。不過,我不認爲像next_prime這樣的東西對你來說很難。