뒤집은 소수

minho·2021년 9월 8일
0

문제


나의코드

function primeIs(num) {
    if(num < 2) return false;
    let sqrt = parseInt(Math.sqrt(num));
    for(let i = 2; i<=sqrt; i++) if(num % i === 0) return false;
    return true;
}

let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
let answer = [];
let arr2 = arr.map((n)=> {
    let m = String(n);    
    let tmp = ""
    for(let i of m) tmp = i + tmp;
    return tmp;
})
for(let j of arr2) if(primeIs(Number(j))) answer.push(Number(j)); 

console.log(answer);

다른사람 code

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 res=Number(x.toString().split('').reverse().join(''));
         if(isPrime(res)) answer.push(res);
      	 }
     return answer;
    }            
   let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100];
   console.log(solution(arr));

핵심

<소수를 구하는법>

  • num의 제곱근을 구한다. 제곱근을 구하는법: Math.sqrt()
  • 제곱근의 소숫점을 제거한다 -> (x)
  • 2 ~ x를 num에 나누어본다.
  • 모든 숫자가 나머지가 있는 숫자면 소수, 하나의 숫자라도 나머지가 0이면 소수X

ex
55가 소수인지 아닌지 판별
1. 55의 제곱근을 구한다. -> Math.sqrt(55) -> 7.416198487095663
2. 제곱근의 소수를 제거한다. -> parseInt(7.416198487095663) -> 7
3. 2 ~ 7까지 숫자를 55에 나누어본다.
4. 하나라도 나머지가 0이나오면 소수X(false), 그렇지않으면 소수(true)이다.

for(let i=2; i<=7; i++){
	if(55%i === 0) return false;
  	else if return true;    
} 

알게된 점

parseInt()과 Math.floor의 공통점과 차이점

  • 공통점: 양수일 경우 내림한 결과가 나온다.
  • 차이점(음수일때)
    Math.floor: 소수 첫째자리에서 양수일때처럼 내림한다.
    ex) Math.floor("-12.34"); // -13
    parseInt: 올림한다.
    ex) parseInt("-12.34"); // -12
profile
Live the way you think

0개의 댓글