题意:给定一个数n,找出连续n个素数相加等于这个数的种数。
思路:水.......
题目链接:http://poj.org/problem?id=2739
View Code
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cmath> 5 #include <string> 6 #include <algorithm> 7 #include <iostream> 8 using namespace std; 9 const int N=10010; 10 11 bool flag[N]; 12 int prime[N]; 13 int n; 14 15 int main(){ 16 17 freopen("data.in","r",stdin); 18 freopen("data.out","w",stdout); 19 20 for(int i=2;i<N;i++) 21 if(!flag[i]) 22 for(int j=2;i*j<N;j++) 23 flag[i*j]=true; 24 int cnt=0; 25 for(int i=2;i<N;i++) if(!flag[i]) prime[++cnt]=i; 26 while(scanf("%d",&n),n){ 27 int sum=0; 28 cnt=0; 29 for(int i=1;prime[i]<=n;i++){ 30 sum=prime[i]; 31 if(sum==n){cnt++;break;} 32 for(int j=i+1;sum<=n;j++){ 33 sum+=prime[j]; 34 if(sum==n){cnt++;break;} 35 } 36 } 37 printf("%d\n",cnt); 38 } 39 return 0; 40 }