코딩테스트 공부
소수구하기
codevil
2022. 3. 22. 00:12
본인의 이전의 수를 일일이 나눠서하는 방법을 사용하면 오래 걸리니, 에라토스테네스의 체를 활용한. (여러번봐도 이름이 어려우니 그냥 소수의 체라고 기억을 하고있...습니다) 방법을 서술하겠습니다.
1. 우선, 소수의 Boundary condition에 해당하는 1에 대한 값 (0부터는 자연수가 아니라 흠흠..)
2. 그리고 2의 배수에 관한 값
3. 나머지는 3부터 주어진 숫자의 루트값이 전에 대한 값들.
const isPrime = num => {
//Boundary Condition(1)
if (num===1) return false;
if (num%2===0) return num===2? true : false;
let sqrt = parseInt(Math.sqrt(num));
for(i=3;i<=sqrt;i++){
if(num%i===0)return false
}
return true
}
여러번 보다보니 좀 익숙해진거같다. 주의할 것, sqrt앞의 기호는 <=이다
요즘 너무, 조급하게 잘하려고 하는거같다. 예전에 공부할 때 들었던, 7번 잊어버려야 제대로 기억한다! 라는 마인드를 기억하며.. 나중에 또 까먹으면 또 보자 소수야