ALGORITHM

[JAVA] 백준 6588번- 골든바흐의 추측

연듀 2022. 10. 9. 18:29

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

 

6588번: 골드바흐의 추측

각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰

www.acmicpc.net

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


        int[] arr = new int[1000001];

        // 에라토스테네스의 체
        for(int i=2; i<=Math.sqrt(arr.length); i++){
            for(int j=i*i; j<arr.length; j+=i){
                if(arr[j]==0) arr[j]=1; // 소수가 아니면 1로
            }
        }

        while(true){
            int n = Integer.parseInt(br.readLine());
            boolean flag = false;

            if(n==0) break;

            for(int i=3; i<=n; i++){
                if(arr[i]!=1 && arr[n-i]!=1){
                    System.out.println(n+" = "+i+" + "+(n-i));
                    flag = true;
                    break;
                }
            }
            if(!flag) System.out.println("Goldbach's conjecture is wrong.");
        }
    }
}