【POJ】2739

来源:互联网 发布:南平seo快速优化软件 编辑:程序博客网 时间:2024/06/05 20:44

http://poj.org/problem?id=2739

将整数n分解为连续素数之和,有多少种分法?

艾氏筛法做一份素数表,然后在表上爬行一遍。

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <algorithm>using namespace std;int n;vector <int> prime;bool is[100005];int ans;void init(){    memset(is,1,sizeof(is));    is[0]=is[1]=false;    for (int i=2;i<100005;i++){        if (is[i]){            prime.push_back(i);            for (int j=i*2;j<=100005;j+=i){                is[j]=false;            }        }    }}int main(){    init();    int size=prime.size();    while (cin >> n && n){        int l=0,r=0,sum=0,ans=0;        while (1){            while (sum<n&&r<size){                sum+=prime[r++];            }            if (sum<n){                break;            }            else            if (sum==n){                ans++;            }            sum-=prime[l++];        }        cout << ans << endl;    }}
原创粉丝点击