소인수분해
자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하는 solution 함수 만들기
- 문제 풀이
function solution(n) {
var answer = [];
for (let i = 2; i < n + 1; i++) {
let isMinor = true;
if (n % i === 0) {
for (let j = 2; j < i + 1; j++) {
if ((i % j === 0) & (i / j > 1)) {
isMinor = false;
break;
}
}
if (isMinor) {
answer.push(i);
}
n = n / i;
}
}
return answer;
}
소수는 1을 제외하고, 본인 이외의 수로 나누어지지 않는 숫자이다.
풀이 순서
1. 주어진 수를 나누었을 때 나머지가 0인 숫자들을 구한다.
2. 그 숫자들 중에 소수만 골라낸다.
- 주어진 수를 나누었을 때 나머지가 0인 숫자들을 구한다.
- 반복문을 2부터 시작해서 n까지 수행한다.
- 만약 n을 나누었을 때 나머지가 0인 경우를 if로 찾는다.
- 그렇게 찾은 숫자가 소수인지 확인하기위해 isMinor라는 변수를 사용한다.
- 소수인지 확인한 후 n에 n을 i로 나눈 값을 할당시킨다.
- 소수만 골라내기
- 소수가 아닐 경우 소수로 나누어진 값의 몫이 1보다 항상 크다.
- 조건을 통과하지 못하면 isMinor에 false 할당한다.
- isMinor가 true인 경우에만 answer에 push한다.
- isMinor는 반복문 시작시 true로 항상 초기화한다.