Goldbach`s Conjecture
题解:素数打表+暴力枚举。
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e7+10, tot = N/log(N)+ 100000;
int prime[tot];
bool vis[N];
int init()
{
int k = 0;
for(int i = 2; i < N; ++i) {
if(vis[i] == 0) prime[k++] = i;
for(int j = 2; j * i < N; ++j) {
if(vis[i * j] == 0)
vis[i * j] = 1;
}
}
return k;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("input.in","r",stdin);
#endif
int k = init();
int T, n, t = 1;
cin >> T;
while(T--) {
scanf("%d",&n);
int cnt = 0;
for(int i = 0; i < k; ++i) {
if(prime[i] > n / 2) break;
if(vis[n - prime[i]] == 0) {
cnt++;
}
}
printf("Case %d: %d\n",t++,cnt);
}
return 0;
}