POJ 2739 Sum of Consecutive Prime Numbers-数论-(连续素数和)

题意:求有多少种连续素数和是n,n的范围:2~10000

分析:预处理出10000内的素数,然后每输入一个n就用二重循环找出sum==n的个数,因为素数约为1200个,O(n^2)不会超时

代码:

#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#define max(a,b) a>b?a:b
using namespace std;
int n,prim[5000],vis[10010];
int k;
void is_prim()
{
	k=0;
	memset(vis,0,sizeof(vis));
	for(int i=2;i<10010;i++){
		if(!vis[i]){
			prim[k++]=i;
			for(int j=2;j*i<10010;j++){
				vis[j*i]=1;
			}
		}
	}
}
int main()
{
	is_prim();
	while(cin>>n){
		if(!n) break;
		int tot=0;
		for(int i=0;i<k;i++){
			int sum=0;
			for(int j=i;j<k;j++){
				sum+=prim[j];
				if(sum==n){
					tot++;break;
				}
				if(sum>n) break;
			}
		}
		cout<<tot<<endl;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 08:43:54

POJ 2739 Sum of Consecutive Prime Numbers-数论-(连续素数和)的相关文章

POJ 2739 Sum of Consecutive Prime Numbers(水题)

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20560   Accepted: 11243 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representatio

poj 2739 Sum of Consecutive Prime Numbers 素数 读题 难度:0

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19697   Accepted: 10800 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representatio

poj 2739 Sum of Consecutive Prime Numbers 尺取法

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21924   Accepted: 11996 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representatio

POJ 2739 Sum of Consecutive Prime Numbers【素数打表】

解题思路:给定一个数,判定它由几个连续的素数构成,输出这样的种数 用的筛法素数打表 Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20020   Accepted: 10966 Description Some positive integers can be represented by a sum of one or more consecutive

POJ 2739 Sum of Consecutive Prime Numbers( *【素数存表】+暴力枚举 )

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19895   Accepted: 10906 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representatio

poj 2739 Sum of Consecutive Prime Numbers(尺取法)

Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representations does a given positive integer have? For example, the integer 53 has two representations 5 + 7 + 11 + 13 + 17 and 53

POJ 2739 Sum of Consecutive Prime Numbers(素数)

http://poj.org/problem?id=2739 题意: 给你一个10000以内的自然数X,然后问你这个数x有多少种方式能由连续的素数相加得来? 分析: 首先用素数筛选法把10000以内的素数都找出来按从小到大保存到prime数组中. 然后找到数X在prime中的上界, 如果存在连续的素数之和==X, 那么一定是从一个比X小的素数开始求和(不会超过X的上界),直到和sum的值>=X为止. 所以我们暴力枚举10000以内的所有可能的素数相加和的起始点i,然后求连续素数的和,看看当前以p

POJ 2739 Sum of Consecutive Prime Numbers(素数打表水题)

[题意简述]:题意很简单,就是用连续的素数加和,计算有多少个这样的连续的素数数列可以使这个序列的和等于输入的数. [分析]:很经典的素数模板,基本所有有关素数的题,我都会使用这个模板. // 268K 16Ms #include<iostream> using namespace std; #define N 10000 bool isprime[N]; long long prime[1300],nprime; // 注意long long void doprime() { long lon

POJ 2739 Sum of Consecutive Prime Numbers 难度:0

题目链接:http://poj.org/problem?id=2739 #include <cstdio> #include <cstring> using namespace std; int method[10001][1300]; int dp[10001]; bool isntprime[10001]; int heap[1300],cnt; void calprime(){ method[2][0]=1; dp[2]++; heap[cnt++]=2; for(int i

POJ 2739 Sum of Consecutive Prime Numbers

题意:问一个数字能被多少种连续的质数相加得到. 解法:一开始没看见是连续的……SB了半天……后来打了个表……就这样吧 代码: #include<stdio.h> #include<iostream> #include<algorithm> #include<string> #include<string.h> #include<math.h> #include<limits.h> #include<time.h>