2012-08-01 77 views
3

我正在想出一個有效的方法來列出大因數的所有因數。比方說1000!用暴力是完全不可能的。有沒有一種有效的方法? 我需要處理它們,即找到編程挑戰的總和。查找大因子數的因數和?

+2

如果你只是想要素因子分解,那很容易。如果你想要素因素的所有獨特組合(這就是「所有因數」所暗示的),那麼我認爲*其中約有10 ** 106個。你打算跟他們做什麼? – AakashM 2012-08-01 10:49:29

+0

AakashM是對的,[this](http://www.wolframalpha.com/input/?i=sigma_0%281000!%29)是1000的除數!所以明顯地列出它們是不可能的。 – interjay 2012-08-01 11:04:19

+0

我需要處理它們,即找到編程挑戰的總和。 – elasolova 2012-08-01 11:38:10

回答

2
  1. 找到每個數字的素因式分解< = 1000。我將它存儲爲素數 - >冪的字典。例如。對於像24 {2: 3, 3: 1}這樣的單個數字,因爲24是2**3 * 3**1
  2. 找到1000!的素因子分解。這是數字字典< = 1000的組合,通過總結每個鍵(素數)的所有值。
  3. 然後您可以使用equation 14 on this page作爲@AakashM已經說過。
+0

如果在這種情況下N是1000,那麼這個方法會變得和10E8一樣大? – 2015-03-31 16:33:30

+0

我認爲這種方法完全一樣,只需要更長的時間!你嘗試過嗎?你發現了什麼問題? – Hbcdev 2015-04-01 12:13:21