BOJ::6588 골드바흐의 추측

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


1. 에라토스 테네스의 체를 이요하여 소수를 판별한다.


2. 3~1000000 사이 홀수 소수를 벡터 v에 넣는다.


3. x가 두 홀수 소수의 합으로 표현이 가능한지 찾는다.


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
38
39
#include <iostream>
#include <vector>
#define P pair<int,int>
using namespace std;
 
int primes[1000001];
vector<int> v;
 
int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);
 
    //에라토스테네스의 체
    for (int i = 2; i <= 1000000; i++) {
        for (int j = 2; i*<= 1000000; j++) {
            if (primes[i*j])continue;
            primes[i*j] = true;
        }
    }
    //3이상 소수 벡터에 푸쉬
    for (int i = 3; i <= 1000000; i++) {
        if (!primes[i])v.push_back(i);
    }
 
    int x;
    while (true) {
        cin >> x;
        //종료조건
        if (x == 0)break;
 
        //두 소수의 합으로 표현 가능한지 확인
        for (int i = 0; i < v.size(); i++) {
            if (!primes[x - v[i]]) {
                cout << x << " = " << v[i] << " + " << x - v[i] << "\n";
                break;
            }
        }
    }
 
}
cs

 


'BOJ::문제풀이' 카테고리의 다른 글

7562 나이트의 이동  (0) 2018.01.06
6603 로또  (0) 2018.01.06
5014 스타트링크  (0) 2018.01.06
3187 양치기 꿍  (0) 2018.01.06
2668 숫자고르기  (0) 2018.01.06

+ Recent posts