Sum of Consecutive Prime Numbers——素数

it2023-09-30  73

用了欧拉筛法,对于欧拉公式还是有很多不理解的地方,回头补几道练习。

#include<iostream> #include<cstdio> #include<algorithm> #include<math.h> #include<cstring> #include<string> #include<vector> using namespace std; const int maxn=1e5+5; int vis[maxn],prime[maxn]; int cnt=0; void Prime(int n){ memset(vis,1,sizeof(vis)); vis[1]=0; for(int i=2;i<=n;i++){ if(vis[i]){ prime[++cnt]=i; } for(int j=1;j<=cnt&&i*prime[j]<=n;j++){ vis[i*prime[j]]=0; if(i%prime[j]==0){ break; } } } } int main(){ Prime(maxn); int n; int ans=0; while(cin>>n){ ans=0; if(n==0) break; int k; for(int i=1;i<=cnt;i++){ k=0; for(int j=i;j<=cnt;j++){ k+=prime[j]; if(k==n){ ans++; break; }else if(k>n){ break; } } } cout<<ans<<endl; } return 0; }
最新回复(0)