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         

posted on 2012-08-15 21:08  mycapple  阅读(505)  评论(0编辑  收藏  举报

导航