반응형
입력된 값 n을 소인수분해하여 배열로 return하는 알고리즘입니다.
const primeFactors = n => {
const answer = [];
// 2로 나눠지면 계속 나누기
while (n % 2 === 0) {
answer.push(2);
n /= 2;
}
// 3부터 루트n까지 나눌 수 있으면 나누기
for (let i = 3; i * i <= n; i += 2) {
while (n % i === 0) {
answer.push(i);
n /= i;
}
}
// 루트n부터 n까지 소수인 경우 처리
if (n > 2) answer.push(n);
return answer;
};
console.log(primeFactors(10)); // [2, 5]
console.log(primeFactors(12)); // [2, 2, 3]
console.log(primeFactors(100)); // [2, 2, 5, 5]
console.log(primeFactors(987654321)); // [3, 3, 17, 17, 379721]
console.log(primeFactors(98942342930478921843840297348120370127));
/*
[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1882747,
1391042987
]
*/
반응형
'Algorithm' 카테고리의 다른 글
프로그래머스 위클리 챌린지 4주차 - 직업군 추천하기 [ javascript ] (0) | 2021.09.10 |
---|---|
프로그래머스 위클리 챌린지 6주차 - 복서 정렬하기 [ javascript ] (0) | 2021.09.08 |
소수 판별 알고리즘 [ javascript ] (0) | 2021.09.07 |
프로그래머스 코딩테스트 연습 Level1 - 3진법 뒤집기 [ javascript ] (0) | 2021.08.13 |
전치행렬 구하기 [javascript] (0) | 2021.08.13 |