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         

你可能感兴趣的:(问题)