POJ2739 - Sum of Consecutive Prime Numbers(素数问题)
题目大意
给定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; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步