/*
* File: main.cpp
* Author: ssslpk
*
* Created on August 28, 2012, 3:08 PM
*
* 题目意思: 给出一个数,求这个数有几种方法是由一至多个连续的素数之和
* 解题: 暴力水过
*/
#include <cstdlib>
#include<iostream>
#include<string.h>
#include<cstdio>
#include<math.h>
#define maxn 10002
using namespace std;
int ispri[maxn];
int pri[maxn];
int plen;
void prime()
{
memset(ispri,1,sizeof(ispri));
ispri[1]=ispri[0]=0;
for(int i=2;i<maxn;i++)
{
if(ispri[i])
{
pri[plen++]=i;
for(int j=2;i*j<maxn;j++)
ispri[i*j]=0;
}
}
}
int main(int argc, char** argv) {
prime();
int n;
while(scanf("%d",&n),n)
{
int cnt=0;
for(int i=0;i<plen &&pri[i]<=n;i++)
{
int sum=0;
for(int j=0;j<n &&sum<=n;j++)//len
{
sum+=pri[i+j];
if(sum==n){cnt++;break;}
else if(sum>n)break;
}
}
printf("%d\n",cnt);
}
return 0;
}
poj2379 Sum of Consecutive Prime Numbers(水)
最新推荐文章于 2026-04-02 16:33:26 发布
本文介绍了一种通过暴力搜索的方法来找出一个整数可以由多少种不同的连续素数序列相加得到的问题解决方案。该算法首先预处理出一定范围内的所有素数,然后遍历这些素数序列检查它们的和是否等于给定的目标数值。

3325

被折叠的 条评论
为什么被折叠?



