NYOJ 26 孪生素数问题
地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=26
思路:筛法求孪生素数
1 //筛法求孪生素数 2 #include<stdio.h> 3 #include<math.h> 4 #include<string.h> //memset函数 5 bool visit[1000001]; //判断是否拜访过 6 int main() 7 { 8 int i,j,n,count; 9 long int m; 10 scanf("%d",&n); 11 while(n--) 12 { 13 count=0; 14 memset(visit,0,sizeof(visit)); 15 scanf("%ld",&m); 16 for(i=2;i<=sqrt(m);i++) //判断是否为素数过程 17 if(!visit[i]) //没有拜访过 18 { 19 for(j=i*i;j<=m;j+=i) 20 visit[j]=1; //拜访过置为1 21 } 22 if(m==3) //距离为1的就这一种情况 23 count=1; 24 else 25 if(m>3) 26 { 27 for(i=1;i<=m-2;i++) 28 { 29 if(!visit[i]&&!visit[i+2]) //孪生素数 没拜访过 30 count++; //执行判断是孪生素数count++ 31 } 32 } 33 printf("%d\n",count); 34 } 35 return 0; 36 } 37 38