Sum of Consecutive Prime Numbers(素数打表+尺取)
Description
numbers, so neither 7 + 13 nor 3 + 5 + 5 + 7 is a valid representation for the integer 20.
Your mission is to write a program that reports the number of representations for the given positive integer.
Input
Output
Sample Input
2
3
17
41
20
666
12
53
0
Sample Output
1
1
2
3
0
0
1
2 题目意思:给你一个数问你这个数可以有多少种方案的连续素数来组成,输出方案数。 解题思路:素数打表与尺取的组合应用。
https://www.cnblogs.com/wkfvawl/p/9092546.html
开始以为应该时间超不了限,暴力了一发,果然还真是出问题了
#include<stdio.h>
#include<string.h>
#define MAX 10010
long long s[MAX],isprime[MAX];
void prime()///素数打表
{
long long i,k,j;
k=;
memset(isprime,,sizeof(isprime));///初始化都认为是素数
isprime[]=;
isprime[]=;///0和1不是素数
for(i=; i<=MAX; i++)
{
if(isprime[i])
{
s[k++]=i;///保存素数
}
for(j=i*; j<=MAX; j+=i)
{
isprime[j]=;///素数的倍数都不是素数
}
}
}
int main()
{
int n,i,j,count,sum;
prime();
while(scanf("%d",&n)!=EOF)
{
if(n==)
{
break;
}
count=;
for(i=; i<; i++)
{
sum=;
for(j=i; j<; j++)
{
sum=sum+s[j];
if(sum==n)
{
count++;
break;
}
else if(sum>n)
{
break;
}
}
}
printf("%d\n",count);
}
return ;
}
这是正确的尺取法的答案
1 #include<stdio.h>
2 #include<string.h>
3 #define MAX 10010
4 long long s[MAX],isprime[MAX];
5 void prime()///素数打表
6 {
7 long long i,k,j;
8 k=1;
9 memset(isprime,1,sizeof(isprime));///初始化都认为是素数
10 isprime[0]=0;
11 isprime[1]=0;///0和1不是素数
12 for(i=2; i<=MAX; i++)
13 {
14 if(isprime[i])
15 {
16 s[k++]=i;///保存素数
17 }
18 for(j=i*2; j<=MAX; j+=i)
19 {
20 isprime[j]=0;///素数的倍数都不是素数
21 }
22 }
23 }
24 int main()
25 {
26 int n,i,j,count,sum;
27 prime();
28 while(scanf("%d",&n)!=EOF)
29 {
30 if(n==0)
31 {
32 break;
33 }
34 count=0;
35 sum=0;
36 j=1;
37 i=0;
38 while(1)
39 {
40 while(sum<n&&s[i+1]<=n)///s[i+1]<=n表示这个数是可以加的,即右端点还可以继续右移
41 {
42 sum=sum+s[++i];
43 }///开始先找到一个满足条件的序列,之后扩大左端点
44 if(sum<n)
45 {
46 break;
47 }
48 else if(sum>n)
49 {
50 sum=sum-s[j];
51 j++;
52 }///不断扩大右端点
53 else if(sum==n)///存在这样一个连续素数的集合
54 {
55 count++;
56 sum=sum-s[j];///继续扩大右端点
57 j++;
58 }
59 }
60 printf("%d\n",count);
61 }
62 return 0;
63 }
Sum of Consecutive Prime Numbers(素数打表+尺取)的更多相关文章
- POJ 2739 Sum of Consecutive Prime Numbers(素数)
POJ 2739 Sum of Consecutive Prime Numbers(素数) http://poj.org/problem? id=2739 题意: 给你一个10000以内的自然数X.然 ...
- poj 2739 Sum of Consecutive Prime Numbers 素数 读题 难度:0
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19697 ...
- ACM:POJ 2739 Sum of Consecutive Prime Numbers-素数打表-尺取法
POJ 2739 Sum of Consecutive Prime Numbers Time Limit:1000MS Memory Limit:65536KB 64bit IO Fo ...
- POJ 2739 Sum of Consecutive Prime Numbers【素数打表】
解题思路:给定一个数,判定它由几个连续的素数构成,输出这样的种数 用的筛法素数打表 Sum of Consecutive Prime Numbers Time Limit: 1000MS Memo ...
- POJ 2739 Sum of Consecutive Prime Numbers( *【素数存表】+暴力枚举 )
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19895 ...
- POJ 2739. Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20050 ...
- POJ2739 Sum of Consecutive Prime Numbers(尺取法)
POJ2739 Sum of Consecutive Prime Numbers 题目大意:给出一个整数,如果有一段连续的素数之和等于该数,即满足要求,求出这种连续的素数的个数 水题:艾氏筛法打表+尺 ...
- POJ 2739 Sum of Consecutive Prime Numbers(尺取法)
题目链接: 传送门 Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Description S ...
- POJ2739 Sum of Consecutive Prime Numbers 2017-05-31 09:33 47人阅读 评论(0) 收藏
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25225 ...
- Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers http://poj.org/problem?id=2739 Time Limit: 1000MS Memory Limit: 6 ...
随机推荐
- LogViewer超大文本浏览工具
官方下载 LogViewer 是一款简单好用的log日志文件查看工具.您想要查看log日志吗?那么不妨来看看这款LogViewer .该款工具可以在短短数秒内打开上G的LOG文件,支持高亮某行文字(例 ...
- 02JavaScript用法
前言: 介绍一下javascript的最基础语法规范和用法. HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 ...
- 用jQuery实现(全选、反选、全不选功能)
在jQuery选择器的基础下我们实现一个全选,反选,全不选功能! <script type="text/javascript"> $(function ( ...
- 微信支付tp5.1集合
多商户号微信支付 配置 自己改一改 逻辑 就好了! 写的菜 勿喷 extend下面 主要目录 多商户号 配置项 根据自己的需求更改 可能有一些地方存在BUG 自己调试一下 就OK了,别像一个麻瓜一样 ...
- Excel2003 去除重复项
利用 数据透视表 间接 获得 非重复项 1] 选中要去除重复项 的列 数据 2] 3]将选中列移动到 左侧 即可 4] 或者导入到Access中,用sql 语句中的 distinct SELECT D ...
- C语言变量的初始化
关于C语言变量是否需要初始化的问题.以前西北工业大学的C语言老师说的是,需要初始化,如果不初始化就使用的话,变量的值是以前遗留在内存中的,是不确定的(这只是针对局部变量的).C语言全局变量如果没有初始 ...
- MySQL 重要语法
1.查询表abc中的所有数据: SELECT * FROM abc WHERE 1=1; where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句.
- R语言爬虫:爬取百度百科词条
抓取目标:抓取花儿与少年的百度百科中成员信息 url <- "http://baike.baidu.com/item/%E8%8A%B1%E5%84%BF%E4%B8%8E%E5%B0 ...
- 从官网下载centos
今天想从官网下载6.5版本的CentOS,结果找了好一会儿才找到,赶紧记录下来,以备以后查询. 第一步在百度搜索centos,点击"Download CentOS",如下图所示. ...
- Net Core学习笔记
Net Core 官网:https://dotnet.github.io/ Net Core Api: https://docs.microsoft.com/en-us/dotnet/api/?vie ...