반응형
푼지 좀 되서 기억은 잘 가물치지만 수학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행에 함수로 따로 선언해서 했다.
특별히 어려운건 없넹
반응형
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 3009번 JAVA 네 번째 점 [기본 수학2] (0) | 2021.05.11 |
---|---|
백준 1085 자바 직사각형에서 탈출 [기본수학2] (0) | 2021.05.06 |
백준 4948번 자바 베르트랑 공준 [기본수학2] 에라토스테네스의 체 (0) | 2021.05.04 |
백준 1929번 자바 JAVA 소수 구하기 [기본수학2] (0) | 2021.04.29 |
백준 11653번 JAVA 소인수분해 [기본 수학2] (0) | 2021.04.27 |
댓글