-
输入
-
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出
-
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
-
3 6 8 10
样例输出
-
5 1 7 1 11 1
-
01.
#include<iostream>
02.
#include<cmath>
03.
04.
using
namespace
std; //判断是否为素数
05.
06.
int
p(
int
x)
07.
{
08.
for
(
int
i=2;i<=
sqrt
(x);i++)
09.
if
(x%i==0)
10.
return
0;
11.
return
1;
12.
}
13.
14.
int
main()
15.
{
16.
int
n,m,d,i;
17.
cin>>n;
18.
while
(n--)
19.
{
20.
cin>>m;
21.
if
(m==1) //我们容易忽略1这个特殊值
22.
cout<<m+1<<
" "
<<m<<endl;
23.
else
24.
{
25.
for
(i=m;i>=2;i--)
26.
if
(p(i))
27.
{
28.
d=m-i;
29.
break
;
30.
}
31.
for
(
int
j=m+1;j<m+d;j++)
32.
{
33.
if
(p(j))
34.
{
35.
d=j-m;
36.
i=j;
37.
break
;
38.
}
39.
}
40.
cout<<i<<
" "
<<d<<endl;
41.
}
42.
}
43.
return
0;
44.
}