Problem 0222 : Prime Quadruplet

問題概要

日本語なので本文参照(http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0222&lang=jp

n,n+2,n+6,n+8の4つの数字がすべて素数であるとき、それらを4つ子素数と呼ぶことにする。
Nlt;1億なるNが与えられたとき、4つ子素数で、最大の数がN以下であるようなもののうち最大の組の最大の数を求めよ。

解法

最初にエラトステネスの篩で1億までの素数を生成する。その後は上から線形探索。

ソースコード

const int MX=10000001;
bool p[MX];
int n;

int main()
{
	for(int i=2;i*i<MX;i++)if(!p[i])for(int j=i+i;j<MX;j+=i)p[j]=1;
	
	while(scanf("%d",&n),n)
	{
		int s=n;
		for(;s>13;s--)if(!p[s]&&!p[s-2]&&!p[s-6]&&!p[s-8])break;
		printf("%d\n",s);
	}
	return 0;
}