如果输入的整数本身就是素数,则输出该素数本身,距离输出0
-
输入
- 第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出 - 每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入 -
3 6 8 10
样例输出 -
5 1 7 1
11 1
-
#include<stdio.h>
int prime(int n)
{
int i;
for(i=2; i*i<=n; i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int T,m,i,j;
scanf("%d",&T);
while(T--)
{
scanf("%d",&m);
if(m==1)
printf("2 1\n");
else
{
for(i=m; i>=2; i--)
if(prime(i))
break;
for(j=m; j<=(2*m); j++)
if(prime(j))
break;
if((m-i)<=(j-m))
printf("%d %d\n",i,m-i);
else
printf("%d %d\n",j,j-m);
}
}
return 0;
}