题目:
代码:
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int i;
int a[100001]={0},b[100001]={0};
int t=0,k,j,cnt=0;
for(i=2;i<n+1;i++){
if(a[i]==0){
b[t++]=i;
if(b[t]-b[t-1]==2&&t>1){
cnt++;
}
for(j=i+1;j<n+1;j++){
if(j%b[t-1]==0&&a[j]==0){
a[j]=1;
}
}
}
}
for(i=0;i<t-1;i++){
if((b[i+1]-b[i])==2){
cnt++;
}
}
printf("%d",cnt);
return 0;
}
运行超时:
认为是循环太多导致,已进行多次修改,简化循环,结果仍然运行超时。
觉得还是求素数的方法不够简洁,希望能优化程序。
希望能从中得到一个求法的简洁思路