一道站外题,让我求出n (n<=107) 以内的孪生素数的数量,超时33%,限时1sc
代码如下:
#include <bits/stdc++.h>
using namespace std;
int is[10000005];
bool isprime(int x){
if(is[x]){
if(is[x]==2)return true;
else return false;
}
for(int i=2;i*i<=x;i++){
if(x%i==0){
is[x]=1;
return false;
}
}
is[x]=2;
return true;
}
int main(void){
int n,cnt=0;
scanf("%d",&n);
for(int i=3;i<n-2;i+=2){
if(isprime(i) && isprime(i+2)){
cnt++;
}
}
printf("%d",cnt);
return 0;
}