大量的素数分解

我想找到小于10 ^ 12的大数的质分解。我得到了以下代码(在Java中):

public static List<Long> primeFactors(long numbers) {

long n = numbers;

List<Long> factors = new ArrayList<Long>();

for (long i = 2; i <= n / i; i++) {

while (n % i == 0) {

factors.add(i);

n /= i;

}

}

if (n > 1) {

factors.add(n);

}

return factors;

}

首先,上述算法的复杂性是什么?我很难找到它。

而且对于大量的素数来说太慢了。

有没有更好的算法,否则如何优化这种算法?

回答:

如果您想分解 许多

大数,那么最好先找到质数最大sqrt(n)(例如使用Eratosthenes的Sieve)。然后,您只需要检查那些质数是否是因数,而不是全部测试i

<= sqrt(n)

以上是 大量的素数分解 的全部内容, 来源链接: utcz.com/qa/398835.html

回到顶部