開啟章節選單

543 Goldbach's Conjecture

程式碼

#include <bits/stdc++.h>
using namespace std;

#define int long long
#define N 1000000+1

signed main() {
    vector<int> p(N, 1); p[0] = p[1] = 0;
    for (int i = 2; i < N; i++) {
        if (p[i]) for (int j = i*i; j < N; j += i) p[j] = 0;
    }
    set<int> ps;
    for (auto &i : p) if (i) ps.insert(&i-p.data());

    int n;
    while (cin >> n, n) {
        int flag = 1;
        for (auto &i : ps) if (ps.count(n-i)) {
            cout << n << " = " << i << " + " << n-i << '\n';
            flag = 0;
            break;
        }
        flag && cout << "Goldbach's conjecture is wrong.\n";
    }
}