1 /*本篇为转载,在此申明,具体就是先设定从2以后所有的数都为质数,定为质数的数的倍数则不是质数,慢慢排除后面的数*/
 2  
 3  
 4  
 5 #include<iostream>
 6 #include<cstring>
 7 using namespace std;
 8 const int N = 1300000;//第10万个数为1299709
 9 int prime[N];
10 bool notPrime[N];
11 int main()
12 {
13  
14  memset(prime,0,sizeof(prime));
15  memset(notPrime,0,sizeof(notPrime));
16  int count = 0;
17  for(int i = 2; i < N;i++)//求素数表
18  {
19   if(!notPrime[i]) ; prime[count++] = i;
20   
21   for(int j = 0; j < count && (i * prime[j] < N);j++)
22   {
23    notPrime[i * prime[j]] = true;
24    if(!(i % prime[j]))
25     break;
26   }
27  }
28  int test;
29  while(cin >> test && test != 0)
30  {
31   for(int i = 0; i < 100000; i++)
32   {
33    if(prime[i] == test)//输入的是素数
34    {
35     cout << "0" << endl;
36     break;
37    }
38    else
39    {
40     if(test < prime[i] && i != 0)
41     {
42      cout << prime[i] - prime[i - 1] << endl;
43      break;
44     }
45    }
46   }
47  }
48  return 0;
49 }

 

posted on 2016-11-13 22:14  任我主宰  阅读(316)  评论(0编辑  收藏  举报