解题思路:
(1)使用快速的素数(质数)判断法
(2)记录前一个素数,并和当前的素数比较
int isprime(long long n){
if(n==2||n==3) return 1;
if(n%6!=1 && n%6!=5) return 0;
for(long long i=5;i<=floor(sqrt(n));i+=6)
if(n%i==0||n%(i+2)==0) return 0;
return 1;
}
long long* gap(int g, long long m, long long n) {
long long *exp = (long long*)calloc(2,sizeof(long long));
exp[0]=0,exp[1]=0;
long long pre = 0;
if (m>=n) return exp;
for(long long i=m;i<=n;i++) {
if(isprime(i)) {
if(pre==0) pre = i;
else if(i-pre==g) {
exp[0]=pre;
exp[1]=i;
return exp;
}
else pre = i;
}
}
return exp;
}