求素数表应该还有更高效的算法
#include<iostream> #include<cmath> #include<cstring> #define NUM 10001 using namespace std; int main() { bool prime[NUM]; int len,lenp,i,j,pri[1300],n,count,sum; len=(int)sqrt(NUM); memset(prime,1,NUM); for(i=2;i<len;i++) { for(j=i+1;j<NUM;j++) { if(j%i==0) prime[j]=0; } } j=0; for(i=2;i<NUM;i++) { if(prime[i]) pri[j++]=i; } lenp=j; while(1) { cin>>n; count=0; sum=0; if(n==0) return 0; for(i=0;i<lenp;i++) { sum=0; for(j=i;j<lenp;j++) { sum+=pri[j]; if(sum==n) { count++; break; } else if(sum>n) break; } } cout<<count<<endl; } }
posted on 2009-09-06 15:47 草头菜 阅读(119) 评论(0) 编辑 收藏 举报
Powered by: 博客园 Copyright © 2024 草头菜 Powered by .NET 8.0 on Kubernetes