博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
素数距离问题_ny_24.java
阅读量:4518 次
发布时间:2019-06-08

本文共 1297 字,大约阅读时间需要 4 分钟。

 

素数距离问题

时间限制:
3000 ms  |  内存限制:
65535 KB
难度:
2
 
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
 
输入
第一行给出测试数据组数N(0<N<=10000)
接下来的N行每行有一个整数M(0<M<1000000),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入
36810
样例输出
5 17 111 1
来源
上传者
import java.io.BufferedReader;import java.io.InputStreamReader;public class Main{	public static void main(String[] args) {		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));		try {			int N=Integer.parseInt(bf.readLine());			while(N-->0){				int m=Integer.parseInt(bf.readLine());				if(m<2)				{					System.out.println(2+" "+(2-m));					continue;				}				int i=0;				for(i=2;i*i<=m;i++){					if(m%i==0)						break;				}				if(i*i>m){					System.out.println(m+" "+"0");					continue;				}				int left=-20;				for(i=m-1;i>=2;i--){					int j=0;					for(j=2;j*j<=i;j++)						if(i%j==0)							break;					if(j*j>i){						left=i;						break;					}				}				int right=0;				for(i=m+1;;i++){					int j=0;					for(j=2;j*j<=i;j++)						if(i%j==0)							break;					if(j*j>i){						right=i;						break;					}				}				System.out.println((m-left>right-m?(right+" "+(right-m)):(left+" "+(m-left))));			}		} catch (Exception e) {			e.printStackTrace();		}	}}

 

 

转载于:https://www.cnblogs.com/suncoolcat/p/3313332.html

你可能感兴趣的文章
计算一个整数二进制中1的个数
查看>>
netdom join 错误:指定的域不存在,或无法联系。
查看>>
Android中Dialog的使用
查看>>
Android Activity接收Service发送的广播
查看>>
[Leetcode] Spiral Matrix | 把一个2D matrix用螺旋方式打印
查看>>
加速和监控国际网络
查看>>
【Flex】读取本地XML,然后XML数据转成JSON数据
查看>>
字符串循环右移-c语言
查看>>
解决从pl/sql查看oracle的number(19)类型数据为科学计数法的有关问题
查看>>
古训《增广贤文》
查看>>
职场的真相——七句话
查看>>
xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理...
查看>>
[转载]开机出现A disk read error occurred错误
查看>>
STM32 C++编程 002 GPIO类
查看>>
无线冲方案 MCU vs SoC
查看>>
进程装载过程分析(execve系统调用分析)
查看>>
在windows 7中禁用media sense
查看>>
ELK-Elasticsearch安装
查看>>
Android 模拟器(Emulator)访问模拟器所在主机
查看>>
删除字符串中指定子串
查看>>