문제: https://www.acmicpc.net/problem/17103
1. 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
boolean[] arr = new boolean[1000001];
Arrays.fill(arr, 2, arr.length, true);
for(int i = 2; i * i <= arr.length; i++) {
if(arr[i]) {
for(int j = i * i; j < arr.length; j += i)
arr[j] = false;
}
}
while(N-- > 0) {
int num = sc.nextInt();
int cnt = 0;
for(int i = 2; i <= num / 2; i++) {
if(arr[i] && arr[num - i])
cnt++;
}
System.out.println(cnt);
}
}
}
2. 설명
에라토스테네스의 체를 이용하여 소수들을 전부 구한 뒤 소수들 중 합이 입력한 값과 동일한 것의 개수를 출력하면 문제는 해결됩니다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 28278번: 스택 2 [Java] (0) | 2023.09.26 |
---|---|
백준 알고리즘 - 13909번: 창문 닫기 [Java] (0) | 2023.09.25 |
백준 알고리즘 - 4134번: 다음 소수 [Java] (0) | 2023.09.22 |
백준 알고리즘 - 2485번: 가로수 [Java] (0) | 2023.09.21 |
백준 알고리즘 - 1735번: 분수 합 [Java] (0) | 2023.09.20 |