관리 메뉴

꿈꾸는 개발자

뒤집은 소수(소수 문제)-소수 판별법 포함 본문

알고리즘-js(개념+정형화된 코드)

뒤집은 소수(소수 문제)-소수 판별법 포함

rickysin 2023. 6. 16. 17:06

뒤집은 소수 N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하 는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출 력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.

 

▣ 입력설명 첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 100,000를 넘지 않는다.

▣ 출력설명 첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.

▣ 입력예제 1 9 32 55 62 20 250 370 200 30 100

▣ 출력예제 1 23 2 73 2


  • 내가 작성한 코드:
      function isPrime(num) {
        if (num === 1) return false;
        if (num === 2) return true;
        // 논리적으로 맞는 말이다. 숫자는 결국 구성요소이고
        //예를 들어서,2에서 나누어지지 않았으면, 4도 결국 2*2인데 나누어질 수가 없을 것!
        //요소 단위로 생각하면 말이 된다.
        for (let i = 2; i < Math.floor(Math.sqrt(num)); i++) {
          if (num % i === 0) return false;
        }
        return true;
      }
      function solution(arr) {
        let ans = [];
        for (let x of arr) {
          let num = +x.toString().split("").reverse().join("");
          if (isPrime(num)) ans.push(num);
        }
        return ans;
      }

      let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
      console.log(solution(arr));

 

 

 

-소수 판별 시간복잡도 (O루트N)이 된다.