C++最强素数问题
C+最强素数问题题目:小李在你帮助之下轻松战胜了他的同学们,于是满怀恶意的同学出了一个题目来为难小李,作为小李神一样的队友,你又要出力了。素数41能写成连续6个素数之和:41=2+3+5+7+11+13。现在要求n以内的素数中,能表示为最多连续素数之和的那个数,如果有多个答案,请输出最大的那个素数。输入:仅一行,一个整数n。输出:输出就一个整数,为所求的能表示为最多连续素数和的那个素数。提示:【样例说明】 41=2+3+5+7+11+13 【数据规模】 30%的数据,1<=n<=1000 60%的数据,1<=n<=10000 80%的数据,1<=n<=100000 100%的数据,1<=n<=1000000 代码:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>/#include <bits/stdc+.h>using namespace std;int n;int ans1000005;int primes1000005;int v 1000005;int res1000005;void primed() int m=0; for(int i=2;i<=n;i+) if(vi=0) resi=1;vi=i;primesm+=i; for(int j=0;j<m;j+) if(primesj>vi|primesj>n/i) break; vprimesj*i=primesj; int main() cin>>n; memset(res,0,sizeof res); primed(); int a=0; int max_size=0; for(int i=0;i+) if(primesi=0) a=i-1;break; for(int i=0;i<=a;i+) int tem=0; for(int j=i;j<=a;j+) tem+=primesj; if(tem>n) break; if(restem) max_size=max(max_size,j-i+1); ansj-i+1=max(tem,ansj-i+1); cout<<ansmax_size; return 0;4