소수를 한번에 구해주고, vector에 넣는다.
vector에 들어간 순서대로 탐색을 해준다.
두 홀수의 합으로 구성되지 않은 답은 없으므로, 두 소수를 찾으면 그 즉시 출력한다.
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 | #include <bits/stdc++.h> using namespace std; vector<int> vc; bool prime[1000001]; // false면 소수 int main() { ios::sync_with_stdio(0); cin.tie(NULL); for (int i = 3; i < 1000001; i++) { if (!prime[i]) vc.push_back(i); for (int j = i * 2; j < 1000001; j += i) prime[j] = true; } int temp; cin >> temp; while (temp) { for (int i = 0; i < vc.size(); i++) { if (!prime[vc[i]] && !prime[temp - vc[i]]) { cout << temp << " = " << vc[i] << " + " << temp - vc[i] << '\n'; break; } } cin >> temp; } return 0; } | cs |
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 2164 : 카드2 (0) | 2019.01.08 |
---|---|
[BOJ] 2667 : 단지번호붙이기 (0) | 2019.01.04 |
[BOJ] 7562 : 나이트의 이동 (0) | 2019.01.04 |
[BOJ] 15784 : 질투진서 (0) | 2019.01.04 |
[BOJ] 10819 : 차이를 최대로 (0) | 2019.01.04 |