on
[java 백준] 실버 1/ 6588번 골드바흐의 추측
[java 백준] 실버 1/ 6588번 골드바흐의 추측
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main( String [] args) throws IOException {
// 에라토스테네스의 체 사용
BufferedReader br = new BufferedReader( new InputStreamReader( System . in ));
boolean [] arr = new boolean [ 1000001 ];
Stack < Integer > stack = new Stack < > ();
for ( int i = 2 ; i < arr. length ; i + + ) {
arr[i] = true ;
}
for ( int i = 2 ; i < arr. length ; i + + ) {
if (arr[i] = = false ) {
continue ;
}
for ( int j = i + i; j < arr. length ; j + = i) {
arr[j] = false ;
}
}
while ( true ) {
int n = Integer. parseInt (br.readLine());
if (n = = 0 ) {
break ;
}
for ( int i = 2 ; i < = n; i + + ) {
if (arr[i] ! = false ) {
stack. add (i);
}
}
boolean havePrime = false ;
while ( ! stack.isEmpty()) {
int key = stack.peek();
if (stack.contains(n - key)) {
int value = n - key;
System . out . println (n + " = " + key + " + " + value);
havePrime = true ;
break ;
}
else {
stack.pop();
}
}
if (stack.isEmpty() & & havePrime = = false ) {
System . out . println ( "Goldbach's conjecture is wrong." );
}
}
}
}
from http://we1cometomeanings.tistory.com/148 by ccl(A) rewrite - 2021-09-19 11:00:53