原题:
描述如果输入的整数本身就是素数,则输出该素数本身,距离输出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>//72 240,时间,内存
int main() {
void judge(int m);
int n;//测试次数
scanf("%d", &n);
while (n--) {
int m;
scanf("%d", &m);
if (m == 1) {
printf("2 1\n");
continue;
}
else {
judge(m);
}
}
return 0;
}
void judge(int m) {
int a, b;
int i, j;
int flag;
for (i = m;; i--) {//进行m--,素数判断。将距离最近的素数临时储存到a中
flag = 1;
for (j = 2; j*j <= i; j++) {
if (i%j != 0)continue;
else {
flag = 0;
break;
}
}
if(flag == 1) {
a = i;
break;
}
}
for (i = m;; i++) {//将离m++最近的素数赋值给b
flag = 1;
for (j = 2; j*j <= i; j++) {
if (i%j != 0)continue;
else {
flag = 0;
break;
}
}
if (flag == 1) {
b = i;
break;
}
}
printf("%d %d\n", m - a <= b - m ? a : b,//将靠近 m 的那个数输出
m - a <= b - m ? m - a : b - m);
}