大意不再赘述。
思路:注意是两个不同的素数,枚举即可。
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int MAXN = 20010; const int SIZE = (int)sqrt(20010+0.5); int n; bool vis[MAXN]; void init() { memset(vis, 1, sizeof(vis)); for(int i = 2; i <= SIZE; i++) { for(int j = i*i; j < MAXN; j+=i) vis[j] = 0; } } void solve() { int ans = 0; for(int i = n/2; i >= 2; i--) { if(vis[i] && vis[n-i]) { if(i != n-i) ans++; } } printf("%d\n", ans); } int main() { init(); while(~scanf("%d", &n) && n) { solve(); } return 0; }