https://www.patest.cn/contests/pat-b-practise/1007
吐槽:本来是道简单题,可是我提交的时候,老是有段错误,我猜可能是开的数组不够大,但是真正原因是没有置零的缘故。
要细节呀!
#include<cstdio>
#include<cstring>
#define N 200005
int p[N];
int prime[N];
int k=0;
void prime_table(){
for(int i=2;i<N;i++){
if(p[i] == 0){
prime[k++] = i;
for(int j=i;j < N;j+=i){
p[j] = 1;
}
}
}
}
int main(){
int n;
scanf("%d",&n);
int ans = 0;
if(n <= 2){
printf("0\n");
return 0;
}
if(n==3){
printf("1\n");
return 0;
}
memset(p,0,sizeof(p));
prime_table();
for(int i=2;prime[i+1] <= n;i++){
if(prime[i+1] - prime[i] == 2){
ans++;
i++;
}
}
printf("%d\n",ans+1);
return 0;
}