链接 : LOJ 1259
题解
一般素数筛法, 注意空间复杂度
code
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N = 10000000;
int prime[N / 10 + 5]; bool f[N + 5];/**bool型省空间*/
void getPrime(){
memset(prime, 0, sizeof prime);
memset(f, 0, sizeof f);
/**prime[0] = 0;*/
f[1] = 1;
for(int i = 2; i < N; ++i){/**素数筛法*/
if(!f[i]){
prime[++prime[0]] = i;
}
for(int j = 2; i * j < N; ++j)
f[i * j] = 1;
}
}
int main(){
int t, n;
cin >> t;
getPrime();
for(int kase = 1; kase <= t; ++kase){
int ans = 0;
cin >> n;
for(int i = 1; prime[i] * 2 <= n; ++i){
if(!f[n - prime[i]]) ++ans;
}
cout << "Case " << kase << ": " << ans << endl;
}
return 0;
}