Prime faktoryzacja dużych liczb [zamknięte]
Chcę znaleźć faktoryzację liczb pierwszych dużych liczb mniejszych niż 10 ^ 12. Mam ten kod (w 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;
}
Po pierwsze, jaka jest złożoność powyższego algorytmu? Mam trudności ze znalezieniem go?
Również będzie zbyt wolny dla dużych liczb, które są pierwsze.
Czy istnieje lepszy algorytm, czy też jak zoptymalizować to algo?