// File Name: poj3518.cpp // Author: bo_jwolf // Created Time: 2013年10月11日 星期五 15:46:48 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 1399709; vector< int > prime; int unprime[ maxn ]; void Union(){ memset( unprime, 0, sizeof( unprime ) ); unprime[ 0 ] = unprime[ 1 ] = true; for( int i = 2; i < maxn; ++i ){ if( !unprime[ i ] ){ prime.push_back( i ); for( int j = i + i; j < maxn; j += i ){ unprime[ j ] = true; } } } } int main(){ Union(); int n, l, r, mid; while( cin > > n ){ if( !n ) break; int ans = 0; l = 0; r = prime.size() - 1; for( int i = 0; i < prime.size(); ++i ){ if( prime[ i ] < n && prime[ i + 1 ] > n ){ ans = prime[ i + 1 ] - prime[ i ]; } } cout << ans << endl; } return 0; }