1500. Prime Gap(用筛法预处理出素数数组,然后再处理)

来源:互联网 发布:java课程设计 编辑:程序博客网 时间:2024/06/05 05:10
/*1500. Prime Gap(用筛法预处理出素数数组,然后再处理)*/#include<stdlib.h>#include<math.h>#include<iostream>#include<memory.h>using namespace std;const long long MAX = 1299710;long long prime[100001];bool primeBool[MAX+1];long long searchprime(){     memset(primeBool, true, sizeof(primeBool));     primeBool[1] = false;     for(long long  i=2; i<= (int)floor(sqrt((double)MAX)); i++){         if(primeBool[i]){              long long j = i*2;              while(j <= MAX){                  primeBool[j] = false;                  j += i;                      }                                }                 }     long long sizeOfPrime = 0;     for(long long i = 1; i <= MAX; i++){         if(primeBool[i]){            sizeOfPrime++;            prime[sizeOfPrime] = i;         }      }     return sizeOfPrime;}int main(){        long long size = searchprime();    //prime[0] = 1;    long long k;    while(cin >> k && k !=  0){        long long i;        for(i =1; i<= size && prime[i] <= k; i++){                         }        long long gap ;        if( k == 1)           cout << 0 << endl;        else          if( i > size)             cout << 0 << endl;          else          if( k < prime[i]){           if( k == prime[i-1])             cout << 0 << endl;           else {             gap = prime[i] - prime[i-1];              cout << gap << endl;             }        }                               }    system("pause");    return 0;}