백준 9020번: 골드바흐의 추측

Se0ng_1l·2022년 6월 27일
0

백준

목록 보기
11/40

2보다 큰 모든 짝수는 그 짝수보다 작은 두 수소의 합으로 이루어져있다.
1. 에라토스테네스의 체를 이용해 입력한 값보다 작은 소수 조합 구하기
2. n = (입력한 값 / 2), 0 <= i <= n이라고 할 때, 두 소수는 (n + i), (n - i)이다.

#include <iostream>
#include <cmath>
using namespace std;

void init(bool arr[], int num){
    for(int i = 0; i <= num; i++)
    {
        if(i == 0 || i == 1){
            arr[i] = false;
        }
        else{
            arr[i] = true;
        }
    }
}
int main()
{
    int size;
    cin >> size;
    int num;
    bool arr[10001];
    for(int i = 0; i < size; i++)
    {
        cin >> num;
        init(arr, num);
        for(int j = 2; j <= sqrt(num); j++){
            if(!arr[j])
                continue;
            else
                for(int k = j * j; k <= num; k+=j) {
                    arr[k] = false;
                }
        }
        for(int j = 0; j <= num / 2; j++)
        {
            bool x = arr[num / 2 - j];
            bool y = arr[num / 2 + j];
            if(x && y){
                cout << num / 2 - j << " " << num / 2 + j << endl;
                break;
            }
        }
    }
}
profile
치타가 되고 싶은 취준생

0개의 댓글