primeFactorization function

List<int> primeFactorization(
  1. int n
)

Returns the prime factorization of n as a list of prime factors in ascending order.

Uses trial division optimized with 2, 3, and then 6k ± 1 candidates. Returns an empty list if n is less than or equal to 1. Example: primeFactorization(12) returns [2, 2, 3].

Implementation

List<int> primeFactorization(int n) {
  final factors = <int>[];
  if (n <= 1) return factors;

  while (n % 2 == 0) {
    factors.add(2);
    n ~/= 2;
  }
  while (n % 3 == 0) {
    factors.add(3);
    n ~/= 3;
  }

  for (int i = 5; i * i <= n; i += 6) {
    while (n % i == 0) {
      factors.add(i);
      n ~/= i;
    }
    while (n % (i + 2) == 0) {
      factors.add(i + 2);
      n ~/= (i + 2);
    }
  }

  if (n > 3) {
    factors.add(n);
  }
  return factors;
}