
N개의 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력
ex) 32 → 23, 23은 소수 / 190 → 91, 91은 소수가 아님
function isPrime(num) {
if(num===1) return false;
for(let i=2; i<num/2; i++){
if(num%i===0) return false;
}
return true;
}
1과 자기 자신을 제외한 숫자로 나누어 떨어지지 않는 것이 소수
1은 소수가 아니기 때문에 조건문을 통해 false를 반환
for문을 돌려 2부터 num / 2 까지 나누어 떨어지는지 확인, 한 번이라도 나누어 떨어진다면 false 반환
여기서 num / 2 까지 돌리는 이유는 곱셈의 짝이 있기 때문
ex) 16은 약수가 1,2,4,8, 16이다.
2로 나누어 떨어지는 확인한다면 그의 짝인 8로도 나누어 떨어지는 것이기 때문에 절반까지만 확인해보면 된다.
function solution(n, a) {
let result = [];
for(let x of a) {
let num = Number(x.toString().split('').reverse().join(''));
if(isPrime(num)) result.push(num);
}
return result;
}
let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100, 190];
console.log(solution(9,arr)); // [ 23, 2, 73, 2, 3 ]
reverse를 이용해서 뒤집은 배열을 다시 join을 통해 문자열로 만들어 줌
문자열이기 때문에 Number로 형 변환하여 isPrime 함수로 소수 판별