由于审核时,大段题目 文字和其他文章题目内容 重复,导致审核不过,所以这里题目略:
解题思路:暴力解法,三重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;
}