Java

[백준 6588] 골드바흐의 추측 (JAVA)

iheeeee6-6 2023. 3. 25. 12:05
728x90

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

 

6588번: 골드바흐의 추측

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

www.acmicpc.net

 

2의 곱셈부터 해서

소수가 아닌 수를 체크해두어 판단한다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringBuilder sb = new StringBuilder();
		boolean[] arr = new boolean[1000001];
		for (int j = 2; j < 1000001; j++) {
			if (arr[j])
				continue;
			for (int i = j * 2; i < 1000001; i += j) {
				arr[i] = true;
			}
		}
		while (true) {
			int num = Integer.parseInt(br.readLine());
			if (num == 0)
				break;

			int x = 0;
			int y = 0;
			for (int i = 3; i < num - 1; i += 2) {
				if (i % 2 != 0 && (num - i) % 2 != 0) {
					if (!arr[i] && !arr[num - i]) {
						x = i;
						y = num - i;
						break;
					}
				}
			}
			if (x == 0 && y == 0) {
				sb.append("Goldbach's conjecture is wrong.").append("\n");
			} else {
				sb.append(num).append(" = ").append(x).append(" + ").append(y).append("\n");

			}
		}
		System.out.println(sb);
	}

}

'Java' 카테고리의 다른 글

[백준 2636] 치즈 (JAVA)  (0) 2023.03.28
[백준 1826] 연료 채우기 (JAVA)  (0) 2023.03.28
[백준 15711] 환상의 짝꿍 (JAVA)  (0) 2023.03.24
[백준 2485] 가로수 (JAVA)  (0) 2023.03.23
[백준 2206] 벽 부수고 이동하기 (JAVA)  (0) 2023.03.23