
< 오늘의 문제 >
소인수분해

function solution(n) {
let answer = [];
let i = 2;
while (n != 1) {
if (n % i == 0) {
answer.push(i)
while (n % i == 0) {
n = n / i;
}
}
i ++;
}
return answer;
}
- 나의 풀이
let i = 2;
i를 2로 초기화: 소인수분해를 시작할 가장 작은 소수로 설정.
while (n != 1)
n이 1이 아닐 동안 반복: n을 모두 소인수분해할 때까지 반복한다. 소인수분해가 완료되면 n은 1이 된다.
if (n % i == 0)
현재의 i가 n의 소인수인지 확인: n을 i로 나누었을 때 나머지가 0이면 i는 n의 소인수다.
answer.push(i)
소인수를 answer 배열에 추가: 확인된 소인수 i를 answer 배열에 저장한다.
while (n % i == 0)
n을 i로 더 이상 나눌 수 없을 때까지 반복: n이 i로 나누어 떨어지지 않을 때까지 반복한다.
n = n / i
n 업데이트: n을 i로 나누어 n을 갱신합니다. 이는 n에서 i의 소인수를 제거한다