백준

BOJ[JAVA] 17103 골드바흐 파티션

양갱이요 2023. 4. 23. 21:46

https://www.acmicpc.net/problem/17103

 

17103번: 골드바흐 파티션

첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다.

www.acmicpc.net

 

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        boolean[] num = new boolean[1000001];
        num[0] = num[1] = true; // 소수 : false
        for(int i = 2; i * i <= 1000000; i++) {
            if(!num[i]) { // 소수이면, 그 배수는 소수 아님
                for(int j = i + i; j <= 1000000; j += i) num[j] = true;
            }
        }

        int N = Integer.parseInt(br.readLine());
        for(int i = 0; i < N; i++) {
            int n = Integer.parseInt(br.readLine());
            int cnt = 0;
            for(int j = 2; j <= n / 2; j++) {
                if(!num[j] && !num[n - j]) cnt++;
            }
            bw.write(cnt + "\n");
        }
        bw.flush();
        bw.close();
        br.close();
    }
}