n阶乘的推则因式分解

时间:2015-07-07 12:55:07

标签: factorial prime-factoring

如何找到n的素数因子分解!当n是一个大数(10 ^ 8)? 最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

首先找到最高$ n $的素数,或许可以使用Eratosthenes的Sieve。然后将最大的素数标记为具有指数1,一直到(但不包括)n / 2。然后将n / 2到n / 3中的那些标记为指数2,依此类推;继续这个直到你到达sqrt(n)。此时,您可以使用此函数(伪代码)单独计算每个指数:

factorial_exponent(n, p):
  n <- floor(n/p)
  let t = n
  while n >= p:
    n <- floor(n/p)
    t <- t + n
  return t

您也可以在所有素数上使用该函数,而不是像我建议的那样在范围内标记它们,尽管这会花费更长的时间。