```c++
#include <iostream>
using namespace std;
unsigned short prime[7000]={2};
int sum_prime=0;
void CreatePrimes() //创建一个素数表
{
int i,j,k;
for(i=3,j=1;i<65536;i+=2)
{
for(k=3;k*k<=i;k+=2)if(i%k==0)break;
if(k*k>i)
{
prime[j++]=i;
sum_prime++;
}
}
}
int NextPrime(int N,int X){
if(N<=prime[sum_prime]){ //判断是否在素数表内
for(int i=0;i<=sum_prime;i++){
if(N==prime[i])
return X=prime[i];
if((N>prime[i])&&(N<prime[i+1]))
{
return X=prime[i+1];
}
}
}
else //素数表整除法找下一个素数
while(N){
if(N>2147483647)
break;
bool flag=0;
for(int j=0;prime[j]*prime[j]<=N;j++){
if(N%prime[j]==0)
{
N++; flag=1;break;
}
}
if(flag==0)
return N;
}
}
int main(void)
{
int ni,no;
CreatePrimes();
while(1){
cout<<"请输入一个大于1的整数"<<endl;
cin>>ni;
if(ni<1)
break;
if( NextPrime(ni,no)>2147483647||NextPrime(ni,no)<3)
cout<<"Out of range"<<endl;
else cout<<NextPrime(ni,no)<<endl;
}
return 0;
}
```