티스토리 뷰

Algorithm/BOJ

백준 6588번 C++

poopooreum 2023. 8. 21. 12:03
반응형
백준 6588번 골드바흐의 추측

https://www.acmicpc.net/problem/6588

6588번: 골드바흐의 추측

각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰

www.acmicpc.net



정답 코드

#include <iostream>
#include <math.h>
#define MAX 1000001             

using namespace std;

int main(void) {
    ios::sync_with_stdio(false);     
    cin.tie(nullptr);
    cout.tie(nullptr);

    int prime[MAX] = { 1, };        

    for (int x = 2; x <= sqrt(MAX); x++) {      
        if (prime[x] != 0)
            continue;
        for (int y = x * x; y <= MAX; y += x) {
            prime[y] = 1;
        }
    }

    int n;
    while (1) {
        cin >> n;
        if (n == 0)
            break;
        bool find = false;  
        for (int x = 2; x < n; x++) {
            if (prime[x] == 0 && prime[n - x] == 0) {      
                cout << n << " = " << x << " + " << n - x << '\n';
                find = true;
                break;
            }
        }
        
        }
    }
   

문제 풀이

에라토스테네스의 체를 이용해서 먼저 소수를 판정했습니다. 배열 안의 값이 0이면 소수, 1이면 소수가 아닙니다. 그다음 반복문을 돌리면서 0이 입력되면 종료시키고, 그 안에서 2부터 n까지 반복문을 돌립니다.
n-x+x는 n이기 때문에 arr[n]과 arr[n-x]가 둘 다0일때
골드바흐의 추측이 성립하므로 이 경우마다 출력하였습니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 6603번 C++  (0) 2023.08.21
백준 6593번 C++  (0) 2023.08.21
백준 6219번 C++  (0) 2023.08.21
백준 5800번 C++  (0) 2023.08.21
백준 5639번 C++  (0) 2023.08.20
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함