UVALive-3399-Sum of Consecutive Prime Numbers(素数筛,暴力)

69 阅读1分钟

 


原题链接

写个素数筛暴力打表一波就AC了;

#include <iostream>

using namespace std;

const int N = 10001;

int i, j, NotPrime[N];
long long sum[N];
void GetNotPrime()
{
    for( i=2; i<=N; i++ )
        if( !NotPrime[i] )
            for( j = i+i; j<=N; j+=i )
                NotPrime[j] = 1;
}

int k;
void GetPrimeSum()
{
    sum[0] = 0;
    sum[1] = 2;
    k = 1;
    for( i=3; i<N; i++ )
        if( !NotPrime[i] )
        {
            sum[k+1] = sum[k] + i;
            k++;
        }
}

int main()
{
    int n;
    GetNotPrime();
    GetPrimeSum();
    while( cin >> n && n )
    {
        int cnt = 0;
        for( i=0; i<k; i++ )
        {
            for( j=i+1; j<k; j++)
            {
                if( n == sum[j] - sum[i] )
                {
                    cnt++;
                }
            }
        }
        cout << cnt << endl;
    }
    return 0;
}