POJ2739 - Sum of Consecutive Prime Numbers(素数问题)

题目大意

给定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;

}

你可能感兴趣的:(number)