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;}