#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
typedef long long ll;
const int N=1e5+20;
const ll M=1299709;
vector<ll> p;
ll n;
bool check(int x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
return false;
}
return true;
}
int main()
{
for(int i=2;i<=M;i++)
{
if(check(i))
p.push_back(i);
}
while(cin>>n&&n)
{
ll l=0,r=1e5-1;
ll pos;
bool flag=true;
while(l<=r)
{
ll mid=(l+r)/2;
if(p[mid]>=n)
{
r=mid-1;
pos=mid;//更新第一个比n大的素数的下标
if(p[mid]==n)//n为素数
{
flag=false;
break;
}
}
else
l=mid+1;
}
if(flag)
cout<<p[pos]-p[pos-1]<<endl;
else
cout<<0<<endl;
}
return 0;
}
uva 1644 Prime Gap 二分
最新推荐文章于 2018-08-29 22:41:10 发布