1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
| n | result |
|---|---|
| 10 | 4 |
| 5 | 3 |
n 까지 순회하면서 isPrime 함수에 i를 넣고 실행한다.isPrime 함수 안에서는 2부터 i 의 제곱근까지 순회하면서 i가 다른 자연수로 나누어 떨어지는지 검사하고, 나누어 떨어지면 false , 아니면 true를 반환한다.function solution(n) {
let answer = 0;
for(let i = 2; i <= n; i++) {
if(isPrime(i)) answer++;
}
return answer;
}
function isPrime(n) {
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) return false;
}
return true;
}
정확성은 100점인데 효율성이 0점이 나오는 걸 보면
시간복잡도를 좀 더 줄여야 하나보다.