ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boj)17103 - 골드바흐 파티션
    PS/boj 2020. 9. 16. 16:10
    import java.io.*;
    
    // # 골드바흐 파티션
    public class boj_17103 {
        static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        static boolean[] prime = new boolean[1000001];
        static int ans;
    
        public static void main(String[] args) throws IOException {
            // 1. 1,000,001 이하의 소수 담기
            for (int i = 2; i < prime.length; i++) {
                prime[i] = true;
            }
            for (int i = 2; i*i < prime.length; i++) {
                for (int j = i*2; j < prime.length; j+=i) {
                    prime[j] = false;
                }
            }
    
            int t = Integer.parseInt(br.readLine());
            for (int i = 0; i < t; i++) {
                int n = Integer.parseInt(br.readLine());
    
                for (int j = 2; j <= n/2; j++) {
                    if (prime[j] && prime[n-j]) {
                        ans++;
                    }
                }
    
                bw.write(ans + "\n");
                ans = 0;
            }
    
            bw.flush();
            bw.close();
        }
    }
    

    - 바보같이 for문 한번 끝날때마다 ans를 깜빡하고 초기화 안시킴 ...

     

    - 에라토스테네스의 체 로 주어진 범위 안의 소수들을 배열에 담기

    - n=a+b를 만족하는 소수 a,b를 prime에서 검사하고 맞다면 ++ 

    - 근데 for문의 범위를 n까지 돌면 중복이 있으니 j <= n/2; 까지만 돌아준다 .

    'PS > boj' 카테고리의 다른 글

    boj)11726 - 2xn 타일링  (0) 2020.09.16
    boj)1463 - 1로 만들기  (0) 2020.09.16
    boj)1212 - 8진수 2진수  (0) 2020.09.16
    boj)1373 - 2진수 8진수  (0) 2020.09.16
    boj)17087 - 숨바꼭질 6  (0) 2020.09.15
킹수빈닷컴