백준
백준 6588 골드바흐의 추측(Java)
Park DJ
2023. 2. 12. 19:39
https://www.acmicpc.net/problem/6588
6588번: 골드바흐의 추측
각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰
www.acmicpc.net
해석 및 팁
이 문제는 에라토스테네스의 채를 활용하는 문제입니다. n의 범위가 100만이므로 먼저 100까지의 소수를 구해놓은 뒤 주어진수를 반복문을 통해 두 수의 합으로 나타내면 됩니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
boolean[] arr= new boolean[1000001];
arr[0] = true;
arr[1] = true;
for(int i = 2; i * i <= 1000000; i++) {
if(arr[i] == true) continue;
for(int j = i * i; j <= 1000000; j += i) arr[j] = true;
}
while(true) {
int n = sc.nextInt();
if(n == 0) break;
int a = 2;
int b = n - 2;
while(true) {
if(arr[a] == false && arr[b] == false) {
sb.append(n+" = "+a+" + "+b).append("\n");
break;
}
a++;
b--;
}
}
System.out.println(sb);
}
}