-
6588) 골드바흐의 추측백준코딩일기 2020. 1. 29. 19:43
문제 )
https://www.acmicpc.net/problem/6588
풀이 )
에라토스테네스의 체를 완벽히 이해하고 접근하니 쉽게 풀 수 있었다.
소수는 2를 포함하지만 골드바흐의 추측문제는 소수중에서도 홀수만 사용하므로 2를 빼주었다.
코드 )
12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));boolean[] primeNum = new boolean[1000001];// 2부터 100,000까지 모든 수에 true값을 넣음for(int i=3; i<1000001; i++) primeNum[i] = true;for(int i=2; i<1000001; i++) { // 2부터 100,000까지 전부 돌면서 검사for(int j=2; i*j<1000001; j++) { // 소수가 아닌 수를 모두 false로 바꾸는 작업// 이미 검사가 되어 false 값이 들어갔다면 넘어감if( !primeNum[i*j]) continue;// 아직 검사가 안된값이라면 false 값을 넣음// ex). i=2, j=2 이면 i*j=4 의값이 false가 됨primeNum[i*j] = false;}}int n = 1; // 입력받는 수while( n != 0) {n = Integer.parseInt(br.readLine());if( n == 0) break; // 입력받은 수가 0이면 종료int a=0, b=0;for(int i=3; i<1000001; i++) { // 소수중에서도 홀수만 확인하므로 i=3부터 시작// a 와 b가 모두 소수인지 확인 후에 출력if( primeNum[i] == true && primeNum[n-i] == true) {a = i;b = n-i;break;}}}}} cs'백준코딩일기' 카테고리의 다른 글
17103) 골드바흐 파티션 - Java (0) 2020.01.29 9020) 골드바흐의 추측 (0) 2020.01.29 1929) 소수 구하기 - Java (0) 2020.01.29 2960) 에라토스테네스의 체 - Java (0) 2020.01.29 11727) 2×n 타일링 2 - Java (0) 2020.01.24