Fatoração Prime de grandes números [fechado]
Eu quero encontrar a fatoração primária de grandes números menores que 10 ^ 12. Eu tenho esse código (em 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;
}
Primeiro de tudo, qual é a complexidade do algoritmo acima? Estou tendo dificuldades em encontrá-lo?
Também será muito lento para grandes números que são primos.
Existe algoritmo melhor, ou então como otimizar esse algoritmo?