Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준 16935
- java 올림
- 백준 16927
- 네트워크
- time complexity
- java 내림
- 0으로 채우기
- 프로그래머스 도둑질 java
- Math.ceil()
- 알고리즘
- sort
- 프로그래머스 옹알이 java
- Algorithm
- 백준 4375
- java 반올림
- Arrays
- java
- 백준 17425
- Math.floor()
- 자바
- mysql
- 프로그래머스 연속된 수의 합 java
- 프로그래머스 네트워크 java
- 코딩테스트
- 프로그래머스 숫자의 표현 java
- 백준 15661
- 백준 11723
- 백준 18290
- Codility
- 백준 14391
Archives
- Today
- Total
취미처럼
[백준] 6588번 골드바흐의 추측 본문
https://www.acmicpc.net/problem/6588
6588번: 골드바흐의 추측
각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰
www.acmicpc.net
출력값 a, b 는 홀수에 소수이므로 항상 3부터 시작
따라서 b - a가 가장 큰 값은 a가 3일 때임
에라토스테네스의 체로 미리 전체값 소수 판별
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
int n = 1000000;
boolean[] arr = new boolean[n + 1];
Arrays.fill(arr, true);
for(int i = 2; i <= Math.sqrt(n); i++) {
if(arr[i]) {
int j = 2;
while(i * j <= n) {
arr[i * j] = false;
j++;
}
}
}
boolean isEnd = false;
while(!isEnd) {
int num = Integer.parseInt(br.readLine());
if(num == 0) {
isEnd = true;
break;
}
boolean isProve = false;
for(int j = 3; j < num; j++) {
if(arr[j]) {
if(arr[num-j]) {
sb.append(num).append(" = ").append(num - j).append(" + ").append(j).append("\n");
isProve = true;
break;
}
}
}
if(!isProve) {
sb.append("Goldbach's conjecture is wrong.").append("\n");
}
}
System.out.println(sb);
}
}
'Algorithm > 백준' 카테고리의 다른 글
[백준] 3085번 사탕 게임 (0) | 2021.02.25 |
---|---|
[백준] 2309번 일곱 난쟁이 (0) | 2021.02.25 |
[백준] 1929번 소수 구하기 (0) | 2021.02.25 |
[백준] 1978번 소수 찾기 (0) | 2021.02.25 |
[백준] 2609번 최대공약수와 최소공배수 (0) | 2021.02.25 |
Comments