码迷,mamicode.com
首页 > 其他好文 > 详细

Greedy:Sum of Consecutive Prime Numbers(POJ 2739)

时间:2016-01-24 14:09:22      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

                技术分享

                  素数之和

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

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

  

#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\n", 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;
    }
}

技术分享

  

Greedy:Sum of Consecutive Prime Numbers(POJ 2739)

标签:

原文地址:http://www.cnblogs.com/Philip-Tell-Truth/p/5155026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!