[완전 탐색] 뒤집은 소수

jinny·2021년 9월 30일

Algorithm

목록 보기
28/34
post-thumbnail

N개의 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력
ex) 32 → 23, 23은 소수  /   190 → 91, 91은 소수가 아님


소수 판별 함수 isPrime()

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 함수로 소수 판별

profile
주니어 개발자의 기록

0개의 댓글