자연수가 입력되면 각 자연수를 뒤집은 후, 뒤집은 수가 소수이면 출력해라.
단, 첫 자리부터 0 이거나 연속된 숫자는 0을 무시하고 출력한다.
32 55 62 20 250 370 200 30 100
23 2 73 2 3
🔑KEY
- 소수의 조건: 약수는 1과 자기자신만 있다.
🎨첫번째 풀이
//뒤집은 소수 만들기
function isPrime(num){
if(num ===1 ) return false;
// 제곱근 까지 보면 됨
for(let i = 1 ; i < num) ; i++){
if(num % i === 0) return false
}
return true;
}
function solution(arr){
let answer = [];
for(let x of arr){
let a = Number(x.toString().split('').reverse().join(''));
if(isPrime(a)) answer.push(a);
}
return answer;
}
let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
🎈최종풀이
//뒤집은 소수 만들기
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 a = Number(x.toString().split('').reverse().join(''));
if(isPrime(a)) answer.push(a);
}
return answer;
}
let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
console.log(solution(arr));
- isPrime 함수에서 for 문안의 조건을 생각하지 못했다.
( 1을 제외한 숫자부터 증가시켜야 했고, 해당 자연수의 절반까지 돌려주면 됨)