1 /*描述
 2 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
 3 如果输入的整数本身就是素数,则输出该素数本身,距离输出0
 4 输入
 5 第一行给出测试数据组数N(0<N<=10000)
 6 接下来的N行每行有一个整数M(0<M<1000000),
 7 输出
 8 每行输出两个整数 A B.
 9 其中A表示离相应测试数据最近的素数,B表示其间的距离。
10 样例输入
11 3
12 6
13 8
14 10
15 样例输出
16 5 1
17 7 1
18 11 1*/
19  #include<stdio.h>
20 int main()
21 {
22     int N;
23     scanf("%d",&N);
24     while(N --)
25     {
26         int x , i , j , n , m;
27         int f(int a);
28         scanf("%d",&x);
29         if(x == 1)
30         {
31             printf("2 1\n");
32             continue;
33         }
34         if( f( x ) )
35         {
36             printf("%d 0\n",x);
37             continue;
38         }
39         for(i = x + 1 ; ;i++)
40         {
41             if(f ( i ) )
42             {
43                 n = i - x;
44                 break;
45             }
46         }
47         for(j = x - 1; ;j--)
48         {
49             if(f ( j ) )
50             {
51                 m = x - j;
52                 break;
53             } 
54         }
55         if(m <= n)
56             printf("%d %d\n",j,m);
57         else
58             printf("%d %d\n",i,n);
59     }
60     return 0;
61 }
62 #include<math.h>
63 int f(int a)//素数
64 {
65     int i;
66     if(a < 2)
67     return 0;
68     for(i = 2 ; i <= sqrt(a) ; ++i)
69         if(a % i == 0)
70         return 0;
71     return a;
72 }