POJ2739

题目大意

给定N,要求你计算用连续的素数的和能够组成N的种数

题解

先筛选出素数,然后暴力判断即可。。。

代码:

#include<iostream>
#include<cstring>
using namespace std;
#define MAXN 10000
int prime[MAXN+5],cnt;
bool check[MAXN+5];
void get_prime()
{
     cnt=0;
     memset(check,false,sizeof(check));
     for(int i=2;i<=MAXN;i++)
     {
         if(!check[i])
         prime[cnt++]=i;
         for(int j=0;j<cnt&&i*prime[j]<=MAXN;j++)
         {
             check[i*prime[j]]=true;
             if(i%prime[j]==0) break;
         }
     }
}
int main()
{
    int n;
    get_prime();
    while(cin>>n&&n)
    {
        int count=0;
        for(int i=0;i<cnt;i++)
        {
              int ans=0,j=i;
              while(j<cnt&&ans<n)
              {
                  ans+=prime[j];
                  j++;
              }
              if(ans==n) count++;
        }
        cout<<count<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/zjbztianya/p/3229400.html