这道题的核心部分在于优化找素数的部分。必须要用开平方,否则最后的测试点会超时,很难受。不用开平方的话网上也有很多更好的方法啦。总之,你用除二或者直接循环所有数据是不可能AC的哒。
#include<stdio.h>
#include<math.h>
main(){
int z,n,i,temp1,temp2,ans;
int prime[10000]={-3};
scanf("%d",&n);
prime[1]=1;
temp2=2;
ans=0;
for(i=2;i<=n;i++){
temp1=0;
for(z=2;z<=sqrt(n);z++){
if((i%z==0) && (i!=z)){
temp1=1;
break;
}
}
if(temp1==0){
prime[temp2]=i;
temp2++;
}
}
temp2--;
for(i=1;i<temp2;i++){
if(prime[i+1]-prime[i]==2){
ans++;
}
}
printf("%d",ans);
return 0;
}