poj 2739 Sum of Consecutive Prime Numbers

//题目给出一个数,让你求连续的素数相加的和等于这个数的字串个数!(要求是连续的)
//例如 41  41 = 2 + 3 + 5 + 7 + 11 + 13  41 = 11 + 13 + 17  41 = 41 这样的素数字串有3个 
#include "iostream"
#include "cmath"
#include "memory.h"
using namespace std;

int primer[5000];

bool is_primer(int num)
{
     int i;
     if (num == 1) 
         return false;
     else
     {
         int n = sqrt(double(num));
         for (i = 2; i <= n; i++)
         {
             if (num % i == 0)
                 return false;
         }
         return true;
     }
}

/*
//筛子法求素数 
void is_primer()
{
     int num[100000000];
     memset(num, 1, sizeof(num));
     int i, j;
     num[0] = 0, num[1] = 0;
     for (i = 2; i < 100000000; i++)
     {
         if (num[i])
         {
             for (j = i * 2; j < 100000000; j += i)
                 num[j] = 0;
         }
     }
}
*/

int main()
{
    int i, j, k, num, count, sum;
    bool flag;
    memset(primer, 0, sizeof(primer));
    for (i = 1, j = 0; i <= 10000; i++)
    {
        if (is_primer(i))
        {
           primer[j] = i;
           j++;
        }
    }
    while (cin >> num && num)
    {
          count = sum = 0;
          flag = false;
          for (i = 0; i < j; i++)
          {
              sum = 0;
              if (flag)  break;
             for (k = i; k < j; k++)
             {
                 if (primer[k] > num)
                 {
                    flag = true;
                    break;
                 }
                 sum += primer[k];
                 if (sum == num)
                 {
                    count++;
                    break;
                 }
                 if (sum > num)
                    break;
             }
          }
          cout << count << endl;
    }
    //system("pause");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值