这是简单题,直接枚举每个起始的质数,然后连续质数相加,记录下能得到的最大的质数的项数,然后找到最大项数即可。
#include<stdio.h>
bool isPrime(int n) //判断质数
{
int i;
for(i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
int main()
{
int xx,num,sum=0,max=0,cnt,ans;
for(xx=2;xx<1000;xx++) //枚举起始位置
{
if(!isPrime(xx)) //从质数开始
continue;
cnt=0,sum=0;
for(num=xx;;num++)
{
if(sum+num>1000000)
break;
if(!isPrime(num)) //只能加质数
continue;
cnt++; //记录项数
sum+=num;
if(isPrime(sum))
{
if(cnt>max) //得到最大项数,和答案
{
max=cnt;
ans=sum;
}
}
}
}
printf("%d %d\n",max,ans);
return 0;
}