본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 9020번 자바 골드바흐의 추측 [기본수학2]

by 졸린이 2021. 5. 5.
반응형

푼지 좀 되서 기억은 잘 가물치지만 수학2의 문제는 대부분 소수 문제 인듯 싶다.. 음 지겨워

아무튼 요약!

 

1. 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다. 그 두 수의 표현을 골드바흐 파티션이라고 한다.

 

2. n의 골드바흐 파티션을 출력하는 프로그램을 작성. 가능한 경우가 여러가지면 두 소수의 차이가 가장 작은 것을 출력

 

3. 테스트 케이스 T 입력 T 만큼 짝수 n입력

 

간단하쥬?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.Scanner;
 
public class Main {
    //baekjoon 9020 골드바흐의 추측 기본수학2
 
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        
        for(int i=0; i<T; i++) {
            int n = sc.nextInt();
            
            int div, rem; // 두 수의 차이가 가장 작은 것을 출력해야 하므로 n의 절반값부터 검사한다.
//           div = n / 2;
            rem = n - div;
            
            while(true) {
                if(isPrime(div) && isPrime(rem)) { // 두 수가 소수인지 판별
                     break;    //소수면 break로 while문 나감
                } else {    
                    div--;    // 처음 나눈 반이 소수가 아니면 하나는 낮추고 하나는 높여서 다시 검사
                    rem++;
                }
            }
            System.out.println(div + " " + rem);
        }
    }
    static boolean isPrime(int n) {
        boolean check = true;
        for(int i = 2; i<=Math.sqrt(n); i++) {
            if(n % i == 0//n이 2 이상에서 나눠 떨어지면 소수가 아니다.
                check = false;
        }
        return check;    //소수면 true 리턴
    }
}
 
cs

 

왠만한건 주석처리로 설명이 다 되어있다.

이번 풀이는 소수 검사를 28행에 함수로 따로 선언해서 했다.

특별히 어려운건 없넹

 

반응형

댓글