如何找到n的素数因子分解!当n是一个大数(10 ^ 8)? 最有效的方法是什么?
答案 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
您也可以在所有素数上使用该函数,而不是像我建议的那样在范围内标记它们,尽管这会花费更长的时间。