거누의 개발노트
[Java] 프로그래머스 - level1 - 소수찾기 본문
반응형
문제 설명
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을 제외하고 배수들을 미리 찾아 제거한다.(최초로 배수의 기준이 되는 수는 제거 하지 않는다.) -> 제거된 배수들을 다시 제거하지 않게한다.
남아있는 수를 찾으면 소수가 된다.
반응형
'코딩테스트' 카테고리의 다른 글
[Java] 프로그래머스 - level1 - 문자열 다루기 기본 (0) | 2022.03.17 |
---|---|
[Java] 프로그래머스 - level1 - 서울에서 김서방 찾기 (0) | 2022.03.17 |
[Java] 프로그래머스 - level1 - 수박수박수박수박수박수? (0) | 2022.03.15 |
[Java] 프로그래머스 - level1 - 3진법뒤집기 (0) | 2022.03.15 |
[Java] 프로그래머스 - level1 - 약수의 합 (0) | 2022.03.14 |
Comments