소수를 구하는 문제이다.
그렙시는 길이가 1,000,000,000인 도로에 1번 블록부터 시작하여 "10,000,000"번 블록까지 구하는 문제이다.
"10,000,000"번 블록까지 구하는 것이기에
"10,000,000" 블록을 넘어가는 수에 대해서는 연산하지 않으면 된다.
해당 부분이 없으면 효율성에서 에러가 났다.
function solution(begin, end) {
const answer = [];
const isPrime = (i) =>{
const sqrt = Math.sqrt(i);
for(let j = 2 ; j < sqrt+1; j++){
// 제곱근으로 쓰면 a*b === b*a 반대측도 구할 수 있음.
const temp = (i / j) >> 0;
if(temp > 10000000){ // 1번 블록부터 시작하여 "10,000,000"번 블록까지
continue;
}
if(i % j == 0){
answer.push(temp)
return;
}
}
answer.push(1);
}
for(let i = +begin; i <= +end; i++){
if(i === 1){
answer.push(0);
}
else{
isPrime(i);
}
}
return answer
}
반응형
'Algorithm > Programers' 카테고리의 다른 글
프로그래머스 멀리 뛰기 javascript (0) | 2022.09.05 |
---|---|
프로그래머스 방문 길이 javascript (0) | 2022.09.03 |
프로그래머스 N-Queen javascript (0) | 2022.08.28 |
프로그래머스 줄 서는 방법 javascript (0) | 2022.08.28 |
프로그래머스 등산 코스 정하기 javascript , python (0) | 2022.08.23 |
댓글