728x90
반응형
문제설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
[제한 조건]
n은 2이상 1000000이하의 자연수입니다.
[입출력 예]
n result
10 4
5 3
코드
int answer = 0;
int number = n;
int arr[] = new int[number+1];
for(int i=2;i<=number;i++) {
arr[i] = i;
}
for(int i=2;i<=number;i++) {
if(arr[i]==0) continue;
for(int j=2*i;j<=number; j+=i) {
arr[j] = 0;
}
}
for(int i=2;i<=number;i++) {
if(arr[i]!=0) {
answer++;
}
}
return answer;
- 찾아보니 에라토스테네스의 체를 사용해야 한다고 한다. 계산해야 하는 수까지의 배열을 만들어 준 후 곱한 값들은 지우고 남은 값만 계산 하였다.
- 배열 생성
- 소수가 아닌 1을 제외하고 2부터 시작하여 배수들을 모두 지운다.
- 배열 안에 남아있는 수를 카운트한다.
반응형
'프로그래머스 > 프로그래머스 - JAVA' 카테고리의 다른 글
[JAVA] 약수의 합 (0) | 2023.02.21 |
---|---|
[JAVA] 문자열 다루기 기본 (0) | 2023.02.21 |
[JAVA] 정수 내림차순으로 배치하기 (0) | 2023.02.21 |
[JAVA] 정수 제곱근 판별 (0) | 2023.02.21 |
[JAVA] 콜라츠 추측 (0) | 2023.02.21 |