题目大意
给定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; }