我想找到小于 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;
}
首先,上述算法的复杂性是什么??我很难找到它??
对于素数的大数来说,它也太慢了。
有没有更好的算法,或者如何优化这个算法?