2012-08-01 109 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