소수 찾기

leeda06·2023년 7월 26일
1

코딩테스트

목록 보기
49/51

문제 설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

제한사항

n은 2이상 1000000이하의 자연수입니다.

입출력 예

nresult
104
53

입출력 예 설명

입출력 예 #1

1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환

입출력 예 #2

1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환


내코드

Solution.java

class Solution {
    public int solution(int n) {
        int answer = 0;
        for (int i = 2; i <= n; i++) {
            boolean isPrime = true;
            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    isPrime = false;
                    break;
                }
            }
            if (isPrime) {
                answer++;
            }
        }
        return answer;
    }
}

함수 설명

  1. solution 함수는 입력으로 주어진 숫자 n까지의 소수의 개수를 구하는 함수입니다.
  2. 변수 answer를 0으로 초기화하여 소수의 개수를 저장할 준비를 합니다.
  3. for 루프를 사용하여 i를 2부터 n까지 반복합니다.
  4. 소수인지 판별하기 위해 isPrime 변수를 true로 초기화합니다.
  5. for 루프를 사용하여 j를 2부터 i의 제곱근까지 반복합니다.
  6. ij로 나누어 떨어지면 isPrimefalse로 변경하고 반복문을 종료합니다.
  7. isPrime이 여전히 true이면 i는 소수이므로 answer를 증가시킵니다.
  8. 모든 반복이 끝나면 answer에 소수의 개수가 저장되어 반환됩니다.

주요 개념 및 구성 요소

  • 중첩 for 루프: 두 개의 for 루프를 사용하여 소수를 판별하는데 사용됩니다. 첫 번째 루프는 i를 2부터 n까지 반복하고, 두 번째 루프는 j를 2부터 i의 제곱근까지 반복합니다.

  • 조건문 (if): ij로 나누어 떨어지는지 확인하기 위해 사용됩니다. isPrime 변수를 이용하여 소수인지 판별합니다.

  • 변수: answer, i, j, isPrime와 같은 변수들은 코드 실행 중에 값을 저장하거나 반복문 인덱스로 사용됩니다.

  • 제곱근 (Math.sqrt(i)): Math.sqrt() 함수는 주어진 숫자의 제곱근을 반환하는 함수로, 소수 판별에서 사용됩니다. j를 2부터 i의 제곱근까지 반복하여 소수인지 판별합니다.

  • 반환문: 함수에서 소수의 개수를 구한 후 최종 결과를 반환하기 위해 사용됩니다. return answer;를 통해 결과를 반환합니다.

profile
웹솔루션과

0개의 댓글