zoukankan      html  css  js  c++  java
  • sicily 1259 Sum of Consecutive Primes

    此题首先为利用筛选法求得10000以内的素数,然后对于输入的每一个数字,依次以小于它的连续素数相加,相等则种类数加一,返回,换另一个素数开始往后继续相加进行这个过程,最后输出种类数。
    

    1259. Sum of Consecutive Primes

    Constraints

    Time Limit: 1 secs, Memory Limit: 32 MB

    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. The integer 41 has three representations 2+3+5+7+11+13, 11+13+17, and 41. The integer 3 has only one representation, which is 3. The integer 20 has no such representations. Note that summands must be consecutive prime
    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

    The input is a sequence of positive integers each in a separate line. The integers are between 2 and 10 000, inclusive. The end of the input is indicated by a zero.

    Output

    The output should be composed of lines each corresponding to an input line except the last zero. An output line includes the number of representations for the input integer as the sum of one or more consecutive prime numbers. No other characters should be inserted in the output.

    Sample Input

    2
    3
    17
    41
    20
    666
    12
    53
    0

    Sample Output

    1
    1
    2
    3
    0
    0
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <vector>>
    using namespace std;
    const int MAX = 10000;
    bool isprime[10000];
    
    int main() {
    	//筛选法求素数表 
    	vector<int> primes;
    	memset(isprime, true, sizeof(isprime));
    	isprime[1] = false;
    	for (int i = 2; i <= MAX; i++) {//此处记得为MAX,而不是sprt(MAX)否则报错 
    		if (isprime[i]) {
    			primes.push_back(i);
    			int j = i * 2;
    			while (j <= MAX) {
    				isprime[j] = false;
    				j += i;
    			}
    		}
    	}
    	
    	int number;
    	while (cin >> number && number != 0) {
    		int sum = 0;
    		int count = 0;
    		for (int i = 0; i < primes.size() && primes[i] <= number; i++) {
    			for (int j = i; j < primes.size() && primes[j] <= number; j++) {
    				sum += primes[j];
    				if (sum == number) {
    					count++;
    					sum = 0;
    					break;
    				} else if (sum > number) {
    					sum = 0;
    					break;
    				}
    			}
    		}
    		cout << count << endl;	
    	}
    	return 0;
    }
    
  • 相关阅读:
    CentOS 7.0安装Zimbra 8.6邮件服务器
    centos7备份还原与grub2引导和rescue模式修改root密码
    通过grub硬盘安装centos7
    CentOS系统中常用查看系统信息和日志命令小结
    安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)
    linux 下shell脚本执行多个命令的方法
    centos Crontab
    抓取某网站信息时遇到的问题及解决 The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set
    HttpClient不必每次新建实例而RestSharp推荐新建实例的原因
    .net core读取json配置文件
  • 原文地址:https://www.cnblogs.com/xieyizun-sysu-programmer/p/4151847.html
Copyright © 2011-2022 走看看