자릿수의 합 문제와 동일하게 2가지 방법으로 풀 수 있다.
function isPrime(num) {
if (num === 1) return false;
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false;
}
return true;
}
function solution(arr) {
const answer = [];
for (x of arr) {
let temp = 0;
while (x) {
temp *= 10;
temp += x % 10;
x = parseInt(x / 10);
}
if (isPrime(temp)) answer.push(temp);
}
return answer;
}
let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
항상 풀던 풀이 방법인데 의외로 다시 풀려니 헷갈렸다.
<script>
function isPrime(num) {
if (num === 1) return false;
for (let i = 2; i <= parseInt(Math.sqrt(num)); i++) {
if (num % i === 0) return false;
}
return true;
}
function solution(arr) {
let answer = [];
for (let x of arr) {
let temp = Number(x.toString().split('').reverse().join(''));
if (isPrime(temp)) answer.push(temp);
}
return answer;
}
let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
Math.sqrt(num)
까지만 확인해주면 되는 것을 몰랐었음
function isPrime(num) {
console.log(num);
if (num === 1) return false;
for (let i = 2; i < num; i++) {
if (num % i === 0) return false;
}
return true;
}
function solution(arr) {
const answer = [];
for (x of arr) {
let temp = x.toString().split('').reverse().join('');
let num = Number(temp);
if (isPrime(num)) answer.push(num);
}
return answer;
}
let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
풀이2 에서 언급했듯,
i < num
이 아니라,i < Math.sqrt(num)
이었어야 했다!