首页 > 其他 > 详细

nyist 26

时间:2016-03-09 20:48:46      阅读:273      评论:0      收藏:0      [点我收藏+]


#include <stdio.h>

int prime[1000001],k=0;
bool vis[1000001];

void init(){

  for(int i=2;i<=1000;i++)
    if(vis[i]==false)
      for(int j=i+i;j<=1000000;j+=i)
        vis[j]=true;
  for(int i=2;i<1000000;i++)
    if(vis[i]==false)
      prime[k++]=i;
}

int main(){

  init();
  int t,n;
  scanf("%d",&t);
  while(t--){
    scanf("%d",&n);
    int ans=0;
    for(int i=1;prime[i]<=n;i++)
    if(prime[i]-prime[i-1]==2||prime[i]-prime[i-1]==1)//实在纠结用if(prime[i]-prime[i-1]<=2)wa了,发现是多了一个两者相等的情况,可是两个下标不同的素数,怎么会相等呢?表示纠结
    ans++;
    printf("%d\n",ans);
  }
  return 0;
}

 

nyist 26

原文:http://www.cnblogs.com/huaixiaohai2015/p/5259377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!