哈哈,忍不住笑出声来,本以为很麻烦的,几天后重新看,搞定!
#include<iostream>
#include<vector>
using namespace std;
int GetMaxArray(vector<int>&);
bool isPrime(int);
int main()
{
vector<int> ivec;
int m,n;
cin>>m>>n;
for(int i=m;i<=n;i++)
if(isPrime(i))
ivec.push_back(i);
GetMaxArray(ivec);
//system("pause");
return 0;
}
bool isPrime(int n)
{
if(n<=3)
{
if(n==2||n==3)
return true;
else
return false;
}
for(int i=2;i<=n/2;i++)
if(n%i==0)
return false;
return true;
}
int GetMaxArray(vector<int>& ivec)
{
int len=ivec.size();
int start,maxcnt=0,dif,cnt,maxdif;//maxdif记录最终等差
for(int i=0;i<len;i++)
for(int j=i+1;j<len;j++)
{
dif=ivec[j]-ivec[i];
cnt=2;
for(int k=j+1;k<len;k++)
if(ivec[k]-ivec[j]==dif)
{
j=k;
cnt++;
}
if(cnt>maxcnt)
{
maxcnt=cnt;
start=ivec[i];
maxdif=dif;
}
}
for(int i=0;i<maxcnt-1;i++)
cout<<start+i*maxdif<<" ";
cout<<start+(maxcnt-1)*maxdif<<endl;
return 0;
}