打个表,挨个找就可以了。
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <cstdlib> 6 #include <cmath> 7 8 using namespace std; 9 const int maxn = 1300000; 10 int a[maxn]; 11 int c[maxn]; 12 13 void prime() 14 { 15 int i,j,k; 16 for(i=0; i<maxn; i++) 17 a[i]=i; 18 a[0]=0; 19 a[1]=0; 20 for(i=2; i<maxn; i++) 21 { 22 for(j=2*i; j<maxn; j+=i) 23 { 24 a[j]=0; 25 } 26 } 27 j=0; 28 for(i=0; i<maxn; i++) 29 { 30 if(a[i]) 31 c[j++]=a[i]; 32 } 33 } 34 int Find(int *c,int n) 35 { 36 int i; 37 for(i=0; c[i]<=maxn; i++) 38 { 39 if(c[i]==n) 40 return 0; 41 if(c[i]>n&&c[i-1]<n) 42 return i; 43 } 44 return 0; 45 } 46 47 int main() 48 { 49 prime(); 50 int n; 51 while(cin >> n &&n) 52 { 53 if(Find(c,n)) 54 printf("%d\n",c[Find(c,n)]-c[Find(c,n)-1]); 55 else 56 printf("0\n"); 57 } 58 return 0; 59 }