3518

1 // include file
2 #include <cstdio>
3 #include <cstdlib>
4 #include <cstring>
5 #include <cmath>
6 #include <cctype>
7 #include <ctime>
8
9 #include <iostream>
10 #include <sstream>
11 #include <fstream>
12 #include <iomanip>
13 #include <bitset>
14 #include <strstream>
15
16 #include <algorithm>
17 #include <string>
18 #include <vector>
19 #include <queue>
20 #include <set>
21 #include <list>
22 #include <functional>
23
24 using namespace std;
25
26 // typedef
27 typedef long long LL;
28 typedef unsigned long long ULL;
29
30 //
31 #define read freopen("in.txt","r",stdin)
32 #define write freopen("out.txt","w",stdout)
33 #define FORi(a,b,c) for(int i=(a);i<(b);i+=c)
34 #define FORj(a,b,c) for(int j=(a);j<(b);j+=c)
35 #define FORk(a,b,c) for(int k=(a);k<(b);k+=c)
36 #define FORp(a,b,c) for(int p=(a);p<(b);p+=c)
37 #define FORii(a,b,c) for(int ii=(a);ii<(b);ii+=c)
38 #define FORjj(a,b,c) for(int jj=(a);jj<(b);jj+=c)
39 #define FORkk(a,b,c) for(int kk=(a);kk<(b);kk+=c)
40
41 #define FF(i,a) for(int i=0;i<(a);i+++)
42 #define FFD(i,a) for(int i=(a)-1;i>=0;i--)
43 #define Z(a) (a<<1)
44 #define Y(a) (a>>1)
45
46 const double eps = 1e-6;
47 const double INFf = 1e10;
48 const int INFi = 1000000000;
49 const double Pi = acos(-1.0);
50
51 template<class T> inline T sqr(T a){return a*a;}
52 template<class T> inline T TMAX(T x,T y)
53 {
54 if(x>y) return x;
55 return y;
56 }
57 template<class T> inline T TMIN(T x,T y)
58 {
59 if(x<y) return x;
60 return y;
61 }
62 template<class T> inline void SWAP(T &x,T &y)
63 {
64 T t = x;
65 x = y;
66 y = t;
67 }
68 template<class T> inline T MMAX(T x,T y,T z)
69 {
70 return TMAX(TMAX(x,y),z);
71 }
72
73
74 // code begin
75 const int MAXN = (int)sqrt(1299709.0);
76 bool f[1200];
77 int pr[1200],top;
78 int N;
79
80 bool Isp(int a)
81 {
82 FORi(0,top,1)
83 {
84 if(pr[i]>(int)sqrt(a+0.0)) break;
85 if(a%pr[i]==0) return false;
86 }
87 return true;
88 }
89
90 int main()
91 {
92 read;
93 write;
94 memset(f,0,sizeof(f));
95 FORi(2,MAXN/2,1)
96 {
97 if(!f[i])
98 {
99 FORj(i+i,MAXN,i)
100 {
101 f[j]=true;
102 }
103 }
104 }
105 top=0;
106 FORi(2,MAXN,1)
107 {
108 if(!f[i])
109 pr[top++]=i;
110 }
111
112
113 while(scanf("%d",&N)!=-1)
114 {
115 if(N==0) break;
116 int ans = 0;
117 if(Isp(N))
118 {
119 printf("0\n");
120 }
121 else
122 {
123 ans = 1;
124 int L=N-1,R=N+1;
125 while(!Isp(L))
126 {
127 ans++;
128 L--;
129 }
130 while(!Isp(R))
131 {
132 ans++;
133 R++;
134 }
135 printf("%d\n",ans+1);
136 }
137 }
138 return 0;
139 }
posted @ 2011-03-08 00:17  AC2012  阅读(184)  评论(0编辑  收藏  举报