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; }