소인수분해

snippet

소수: 1과 자기 자신으로만 나눌 수 있는 수

function solution(n: number) {
  const factors = [];
  let divisor = 2;
  let _n = n;
  while (_n > 1) {
    while (_n % divisor === 0) {
      factors.push(divisor);
      _n /= divisor;
    }
    divisor++;
  }
}

개선된 snippet

function primeFactors(n: number) {
  // Print the number of 2s that divide n
  while (n % 2 == 0) {
    console.log(2);
    n = n / 2;
  }

  // n must be odd at this point. So we can skip one element (Note i = i +2)
  for (var i = 3; i * i <= n; i = i + 2) {
    // While i divides n, print i and divide n
    while (n % i == 0) {
      console.log(i);
      n = n / i;
    }
  }
  // This condition is to handle the case when n is a prime number
  // greater than 2
  if (n > 2) {
    console.log(n);
  }
}
primeFactors(10); // prints '5' and '2'

Last updated