素数筛水题,看来要把素数筛背下来了
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n, k, t, c = 1, x;
bool vis[10000100];
int prime[1000100], top;
void getp() {
vis[1] = 1;
for(int i = 2; i < 10000001; i++) {
if(vis[i])
continue;
prime[top++] = i;
for(int j = 2; j * i < 10000001; j++)
vis[j * i] = 1;
}
}
int main() {
getp();
int k = 1;
cin >> t;
while(t--) {
cin >> x;
int ans = 0;
for(int i = 0; i < top && prime[i] <= x; i++) {
if(prime[i] > x / 2)
break;
if(!vis[x - prime[i]])
ans++;
}
printf("Case %d: %d\n", k++, ans);
}
return 0;
}