Prime factorización de grandes números [cerrado]
Quiero encontrar la factorización prima de grandes números menores que 10 ^ 12. Tengo este código (en 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;
}
En primer lugar, ¿cuál es la complejidad del algoritmo anterior? ¿Tengo dificultades para encontrarlo?
También será demasiado lento para grandes números que son primos.
¿Hay mejores algoritmos, o bien cómo optimizar este algo?