一开始超时了,因为求<=n的素数时因数是从2到n-1遍历的,其实从2到sqrt(n)遍历即可
#include<iostream>
#include<math.h>
using namespace std;
int a[100000];
int n=100000;
int t=0,c=0;
void primeNumber(int n){
int i,j,flag;
for(i=3;i<=n;i++){
flag=1;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
flag=0;break;
}
}
if(flag==1){
a[++t]=i;
int x=a[t]-a[t-1];
if(x==2) c++;
}
}
}
int main(){
cin>>n;
a[0]=2;
primeNumber(n);
cout<<c;
return 0;
}