这个题开始我把10^5次方当成10000了。并且因为PAT对时间的要求不高,所以不用筛法求素数也可通过。。
//============================================================================
// Name : pat.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
short array[100000];
//1 质数
//-1 合数
//0 未知
void process()
{
array[0]=array[1]=-1;
for(int i=2;i<100000;i++)
{
if(array[i]!=0)
{
continue;
}
array[i]=1;
int temp=i*2;
while(temp<100000)
{
array[temp]=-1;
temp+=i;
}
}
}
int getNext(int input)
{
input++;
while(input<100000&&array[input]!=1)
{
input++;
}
return input;
}
int main() {
process();
int number;
cin>>number;
int count=0;
int pre=2;
int aft=getNext(pre);
for(;aft<=number&&pre<aft;pre=aft,aft=getNext(aft))
{
if(aft-pre==2)
{
count++;
}
}
cout<<count<<endl;
}