加载中…
个人资料
abentu
abentu
  • 博客等级:
  • 博客积分:0
  • 博客访问:15,906
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

poj2739-Sum of Consecutive Prime Numbers

(2010-06-19 17:37:41)
标签:

杂谈

    水题,1到10000里面的质数就很少,求出prime[]之后搞出数列和s[]就很好搞定了。

    松过~~

 

代码:

 

#include "stdio.h"
#include "math.h"
#include "memory.h"
#define N 10010
#define M 5800000

bool b,judge[M];
int prime[N],pp,s[N];

int main()
{
 memset(judge,0,sizeof(judge));
 memset(prime,0,sizeof(prime));
 memset(s,0,sizeof(s));

 int i,j,k;
 prime[1] = 2;
 pp = 1;
 for (i = 3;i <= N;i ++)
 {
  b = 1;
  for (j = 1;j <= pp;j ++)
  if (i % prime[j] == 0)
  {
   b = 0;
   break;
  }
  if (b == 1)
  {
   pp ++;
   prime[pp] = i;
  }
 }

 for (i = 1;i <= pp;i ++)
 {
  s[i] = s[i-1] + prime[i];
  judge[s[i]] = 1;
 }
 judge[0] = 1;

 int n,result;
 while (scanf("%d",&n) != EOF && n > 0)
 {
  result = 0;
  for (i = 1;i <= N;i ++)
  {
   if (prime[i] > n)
    break;
   if (s[i] < n)
    continue;
   if (judge[s[i] - n] == 1)
    result ++;
  }
  printf("%d\n",result);
 }

 return 0;
}

 

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有