1) 매개변수로 받는 n의 1보다 큰 약수들을 구한다.
2) isPrime이라는 소수인지 판별하는 함수를 만들어 약수들을 매개변수로 보내준다.
3) isPeime에서 받은 매개변수의 1보다 크고 매개변수보다 작거나 수들을 for문으로 돌린다.
4) 매개변수가 자기자신이외의 수로 나머지값이 없이 나눠떨어지면 false를 아니면 그 매개변수를 다시 리턴한다.
5) 리턴된 값을 answer에 push하여 넣어주면 끝
// ex) n = 12 answer = [2, 3]
function solution(n) {
var answer = [];
let num = n;
for(let idx = 2; idx <= n; idx++) {
if(n % idx === 0) {
if(isPrime(idx) !== false) {
// console.log(isPrime(idx))
answer.push(isPrime(idx))
}
}
}
// answer = answer.sort()
return answer
}
// 소수구하기
const isPrime = (num) => {
for(let idx = 2; idx < num; idx++) {
if(num % idx === 0) {
return false
}
}
return num
}
내가 짠 코드보다 훨씬 깔끔하고 가독성이 좋아보여서
가져와서 해석하기로 했다.
1) for문으로 2부터 n까지의 숫자를 구한다.
2) while로 n이 i의 약수일때 n에 n을 i로 나눈 값을 할당 하고 answer에 push한다.
3) i로 n의 나머지값이 0일때까지 while을 돌리고를 반복하고
4) 마지막으로 [...new Set(answer)]로 중복된 값을 제거한다.
function solution(n) {
var answer = [];
for(let i = 2; i <= n; i++) {
while (n % i === 0) {
n = n / i;
answer.push(i);
}
}
return [...new Set(answer)];
}