zoukankan      html  css  js  c++  java
  • Greedy:Sum of Consecutive Prime Numbers(POJ 2739)

                    

                      素数之和

      题目大意:一些整数可以表示成一个连续素数之和,给定一个整数要你找出可以表示这一个整数的连续整数序列的个数

      方法:打表,然后用游标卡尺法即可

      

    #include <iostream>
    #include <functional>
    #include <algorithm>
    #define MAX_N 10010
    
    using namespace std;
    
    static int primes_set[MAX_N], flag[MAX_N], p_sum;
    
    void inivilize(void);
    void solve(const int);
    
    int main(void)
    {
        inivilize();
        int n;
    
        while (~scanf("%d", &n))
        {
            if (n == 0) 
                break;
            solve(n);
        }
        return EXIT_SUCCESS;
    }
    
    void solve(const int n)
    {
        int s, t, sum, ans = 0;
        s = t = sum = 0;
    
        while (1)
        {
            while (primes_set[t] <= n && sum < n)
                sum += primes_set[t++];
            if (sum == n)
                ans++;
            if (sum < n)
                break;
            sum -= primes_set[s++];
        }
        printf("%d
    ", ans);
    }
    
    void inivilize(void)
    {
        int i = 2, j;
    
        memset(flag, 0, sizeof(flag));
    
        for (; i < MAX_N; i++)
        {
            if (!flag[i])
                primes_set[p_sum++] = i;
            for (j = 0; j < p_sum && primes_set[j] * i < MAX_N; j++)
                flag[primes_set[j] * i] = 1;
        }
    }

      

  • 相关阅读:
    文件上传和下载
    代理模式
    设计模式分类
    单例模式
    抽象工厂模式
    成长
    Java教程
    python面试大全
    python入门教程
    收藏网摘
  • 原文地址:https://www.cnblogs.com/Philip-Tell-Truth/p/5155026.html
Copyright © 2011-2022 走看看