//题意:给出 n ,如果 n 是素数则输出 0 ,否则求出大于 n 的素数 k 与小于 n 的素数 j
//之间的差。
code:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define MAXN 1300000
using namespace std;
int prime[MAXN], count;
int visited[MAXN];
void Prime()
{
for(int i=2; i<MAXN; i++)
{
if(prime[i]==0)
for(int j=i+i; j<MAXN; j=j+i)
prime[j]=1;
}
}
int get_len(int a)
{
int xi=a+1;
int yi=a-1;
visited[a]=1;
if(prime[yi]==1 && !visited[yi]) {count++; get_len(yi);};
if(prime[xi]==1 && !visited[xi]) {count++; get_len(xi);};
return count;
}
int main()
{
int n;
memset(prime, 0, sizeof(prime));
Prime();
while(scanf("%d", &n),n)
{
if(prime[n]==0) {printf("0\n"); continue;};
memset(visited, 0, sizeof(visited));
count=1;
printf("%d\n", get_len(n)+1);
}
return 0;
}