거누의 개발노트

[Java] 프로그래머스 - level1 - 소수찾기 본문

코딩테스트

[Java] 프로그래머스 - level1 - 소수찾기

Gogozzi 2022. 3. 16. 11:19
반응형

문제 설명

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

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

제한 조건

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

 

내 풀이

int anwser = 0;
boolean[] arr = new boolean[n+1];

for (int i = 2; i*i <= n ; i++)
    if(!arr[i])
        for (int j = i+i; j <= n ; j+=i) arr[j] = true;

for (int i = 2; i <= n ; i++)
    if(!arr[i]) anwser++;

return anwser;

에라토스테네스의 체 -> 소수 찾는 알고리즘

원리? 1을 제외하고 배수들을 미리 찾아 제거한다.(최초로 배수의 기준이 되는 수는 제거 하지 않는다.) -> 제거된 배수들을 다시 제거하지 않게한다.

남아있는 수를 찾으면 소수가 된다.

반응형
Comments