AOJ - Problem 1004 : Pair of Primes

n個の組(1,n)(2,n-1)(3,n-2) ... (n-1,2)(n,1)について、2つの数字がどちらも素数の組の数を求める問題です。エラトステネスの篩で最初に素数表をつくっておきましょう。

#include <iostream>
using namespace std;

const int MAX = 1000001;
char p[MAX] = {0};

void f(){
	for(int i=2 ; i < MAX ; i++ ) p[i] = 1;
	for(int i=2 ; i*i < MAX ; i++ ){
		if( p[i] ){
			for(int j=i+i ; j < MAX ; j += i ){
				p[j] = 0;
			}
		}
	}
}

int main(){
	int n;
	f();
	while( cin >> n ){
		int ans=0;
		for(int a=1 ; a <= n ; a++ ){
			int b = n + 1 - a;
			if( p[a] && p[b] ) ans++;
		}
		cout << ans << endl;
	}
}