题目描述
​ 有一天路飞突发奇想,他有一个猜想,任意一个大于 2 的偶数好像总能写成 2 个质数的和。路飞查了资料,发现这个猜想很早就被一个叫哥德巴赫的人提出来了,称为哥德巴赫猜想。目前还没有证明这个猜想的正确性。路飞告诉你一个整数 n ,让你用这个数去验证。

注意 1 不是质数。

输入
输入一个偶数 n(2≤n≤8000000)​ 。

输出
输出一个整数表示有多少对 (x,y) 满足 x+y=n(x≤y) 且x,y 均为质数。

样例输入1
10
样例输出1
2

#include <iostream>
using namespace std;

int num[8000005];
void init(int n) {
for (int i = 2; i * i <= n; i++) {
if (!num[i]) {
for (int j = 2; i * j <= n; j++) {
num[i * j] = 1;
}
}
}
}
int main() {
int n;
cin >> n;
init(n);
int ans = 0;
for (int i = 2; i * 2 <= n; i++) {
if (!num[i] && !num[n - i]) {
ans++;
}
}
cout << ans << endl;

return 0;
}