素数距离问题
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
描述
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
-
输入
-
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000), -
输出
-
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。 -
样例输入
3
6
8
10
样例输出
5 1
7 1
11 1
import java.io.BufferedInputStream;
import java.util.Scanner;
public class Main {
public static boolean IsPrimer(int x){
if(x<=1)
return false;
if(x==2)
return true;
if(x%2==0||x==1)
return false;
for(int i=3;i<=Math.sqrt(x);i++)
if(x%i==0)
return false;
return true;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int n = cin.nextInt();
while(n-->0){
int num = cin.nextInt();
int T = -1;
int N = 1;
if(IsPrimer(num))
System.out.println(num+" "+0);
else{
while(!IsPrimer(num)){
num = num+T*N;
N++;
T = -T;
}
System.out.println(num+" "+N/2);
}
}
}
}