코딩테스트 51일차
소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
function solution(n) {
var answer = 0; // 소수 개수를 저장할 변수 초기화
for (var i = 2; i <= n; i++) { // 2부터 n까지의 수에 대해 반복
if (isPrime(i)) { // 현재 수 i가 소수인지 확인하는 함수 호출
answer++; // 소수인 경우 개수 증가
}
}
return answer; // 소수 개수 반환
}
// 주어진 수 num이 소수인지 확인하는 함수
function isPrime(num) {
if (num < 2) { // 2보다 작은 수는 소수가 아님
return false;
}
for (var i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) { // num이 i로 나누어 떨어지면 소수가 아님
return false;
}
}
return true; // 소수인 경우
}
✏️풀이
solution 함수는 입력된 숫자 n까지의 수에 대해 반복하여 소수의 개수를 구합니다. 초기에 answer 변수를 0으로 초기화합니다.
for 루프에서 i는 2부터 시작하여 n까지 1씩 증가합니다. 이는 2부터 n까지의 숫자를 하나씩 검사하는 역할을 합니다.
if 문에서 isPrime(i) 함수를 호출하여 현재 수 i가 소수인지 확인합니다. isPrime 함수는 주어진 수가 소수인지를 판별하는 함수입니다.
isPrime 함수는 주어진 수 num이 2보다 작으면 소수가 아니므로 false를 반환합니다. 이후, for 루프에서 2부터 num의 제곱근까지의 수에 대해 반복하여 num이 해당 수로 나누어 떨어지는지를 확인합니다.
만약 num이 해당 수로 나누어 떨어진다면, 즉, 약수가 존재한다면 num은 소수가 아니므로 false를 반환합니다. 그렇지 않은 경우, num은 소수이므로 true를 반환합니다.
isPrime(i) 함수의 반환값이 true인 경우, 소수이므로 answer 변수를 증가시킵니다.
for 루프를 모두 마친 후에는 answer에 저장된 소수의 개수를 반환합니다.
728x90
반응형