반응형
풀이
- 해당 문제는 특정 정수보다 크면서 2배한 것 보다 작거나 같은
- 모든 소수를 구하는 문제로서
- 입력값은 0이 나올 때까지 받기에
- 우선은 모든 입력 값을 배열에 담아두면서
- 가장 큰 값을 찾고, 이후에 큰 값의 2배에 해당 하는 배열을 만들어서
- 모든 소수를 에라토스테네스의 체를 활용하여 판별한 뒤
- 이후 배열을 돌려가며 범위에 해당하는 소수를 카운팅하여 해결.
import java.io.*;
import java.util.*;
public class _4948 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
List<Integer> li = new ArrayList<>();
int mx = 0;
while (true) {
int N = sc.nextInt();
if (N==0) break;
li.add(N);
if (N>mx) mx = N;
}
boolean[] prime = new boolean[2*mx+1];
prime[1]=true;
for (int i=2; i<2*mx; i++) {
for (int j=i*2; j<=2*mx; j+=i) {
if (!prime[j]) prime[j]=true;
}
}
for (int num: li) {
int cnt = 0;
for (int i=num+1; i<=2*num; i++) {
if (!prime[i]) cnt++;
}
bw.write(cnt+"\n");
}
bw.flush();
}
}
'알고리즘' 카테고리의 다른 글
[백준, 자바, 13909번] 창문 닫기 (0) | 2024.11.13 |
---|---|
[백준, 자바, 17103번] 골드바흐 파티션 (0) | 2024.11.13 |
[백준, 자바, 2581번] 소수 (0) | 2024.11.13 |
[백준, 자바, 4134번] 다음 소수 (1) | 2024.11.12 |
[백준, 자바, 1735번] 분수 합 (0) | 2024.11.12 |