[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