素数距离问题 时间限制:3000 ms | 内存限制:65535 KB 难度:2
描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入第一行给出测试数据组数N(0
接下来的N行每行有一个整数M(0
其中A表示离相应测试数据最近的素数,B表示其间的距离。样例输入
3
6
8
10 样例输出
5 1
7 1
11 1
JAVA代码:
/*
* 搜索最小素数距离,优先级分析:
* 1、判断输入的是否为素数,是素数输出
* 2、判断左侧最近素数
* 3、判断右侧最近素数
*
* 特例需注意,数字1不是素数
* */
package org.oj;
import java.util.Scanner;
public class Main {
//判断素数
private boolean is_prime(int x){
if(x>1){
if(x<4){ // 2,3 素数
return true;
}else{
for(int i=2;i<=Math.sqrt(x);i+=1){
if(x%i==0) return false;
}
return true;
}
}
return false;
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
Main nyoj=new Main();
int n=scan.nextInt(); //组数
for(int i=0;i
|