由于审核时,大段题目 文字和其他文章题目内容 重复,导致审核不过,所以这里题目略:
解题思路:暴力解法,三重for循环
AC代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<long long> Primes;
bool isPrime(long t){
for(int i=2;i<t;i++){
if(t%i==0)
return false;
}
return true;
}
void getPrimesKnum(long K){//获得从2开始的前K个素数(K>=3)
Primes.push_back(2);
Primes.push_back(3);
long cnt=2;
for(int i=5;;i++){
if(isPrime(i)){
Primes.push_back(i);
cnt++;
}
if(cnt==K)
return;
}
}
void getMinL(){//正向搜索,公差从小到大搜索
for(long long i=0;i<Primes.size();i++){//从向量Primes的首元素开始
long long start=Primes[i];
for(long long delta=2;delta<=(Primes[Primes.size()-1]-start);delta++){//公差从2开始递增
long long next=start;
for(int times=2;times<=10;times++){
next+=delta;
if( find(Primes.begin(),Primes.end(),next) == Primes.end() )//没找到
break;
else if(next>Primes[Primes.size()-1] )//数值越界
break;
else if(times==10){
cout<<"MinL="<<delta<<endl;
return;
}
}
}
}
}
int main()
{
getPrimesKnum(1000);
getMinL();
cout << "Hello world!" << endl;
return 0;
}