✔ 문제
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
- n은 2이상 1000000이하의 자연수입니다.
10 | 4 |
5 | 3 |
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
🔎 풀이
수학에서 에라토스테네스의 체는 소수를 찾는 방법이다.
📍 알고리즘
- 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다.
- 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색)
- 자기 자신을 제외한 2의 배수를 모두 지운다.
- 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색)
- 자기 자신을 제외한 3의 배수를 모두 지운다.
- 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색)
- 자기 자신을 제외한 5의 배수를 모두 지운다.
- 남아있는 수 가운데 7은 소수이므로 오른쪽에 7을 쓴다. (노란색)
- 자기 자신을 제외한 7의 배수를 모두 지운다.
- 위의 과정을 반복하면 구하는 구간의 모든 소수가 남는다.
✔ 나의코드
반응형
'문제풀기' 카테고리의 다른 글
[프로그래머스/자바] 약수의 개수와 덧셈 (0) | 2022.02.07 |
---|---|
[프로그래머스/자바] K번째 수 (0) | 2022.02.04 |
[프로그래머스/자바] 콜라츠의 추측 (0) | 2022.01.28 |
[프로그래머스/자바] 로또의 최고 순위와 최저 순위 (0) | 2022.01.27 |
[프로그래머스/자바] 두 정수 사이의 합 (0) | 2022.01.26 |