/*
* POJ_2379.cpp
*
* Created on: 2013年10月18日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 10010;
int su[maxn];
bool u[maxn];
int num;
int n;
void prepare() {
int i, j;
num = 0;
memset(u, true, sizeof(u));
for (i = 2; i <= 10001; ++i) {
if (u[i]) {
su[++num] = i;
}
for (j = 1; j <= num; ++j) {
if (i * su[j] > 10001) {
break;
}
u[i * su[j]] = false;
if (i % su[j] == 0) {
break;
}
}
}
}
int main() {
prepare();
while(scanf("%d",&n)!=EOF,n){
int i,j;
int ans = 0;
for(i = 1 ; su[i] <= n ; ++i){
int cnt = 0;
for(j = i ; j < num && cnt < n ; ++j){
cnt += su[j];
}
if(cnt == n){
ans++;
}
}
// printf("%d\n",ans);
cout<<ans<<endl;
}
return 0;
}
(DS1.4.3)POJ 2739(一个数能表示成多少个连续素数之和)
最新推荐文章于 2025-11-02 16:23:49 发布
本文提供了一种解决POJ_2379问题的有效算法,该算法通过预处理素数并利用这些素数来计算特定数值的所有可能组合。主要内容包括:初始化素数表、遍历所有素数进行累加操作直至达到目标数值,最后统计并输出所有可能的组合数量。
1万+

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



