素数距离问题
2016-05-12 13:05
344 查看
素数距离问题
时间限制: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.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int num = input.nextInt(); for (int i = 0;i<num;i++) { int number = input.nextInt(); if (isPrimer(number)) { System.out.println(number+" "+0); } else { int up = getUpNum(number); int down = getDownNum(number); if ( (Math.abs(up-number)) > Math.abs(number-down)){ System.out.println(down+" "+Math.abs(down-number)); } else if ( (Math.abs(up-number)) == Math.abs(number-down)){ System.out.println(down+" "+Math.abs(down-number)); } else { System.out.println(up+" "+Math.abs(up-number)); } } } } static int getUpNum(int n){//获得最近的素数 int index = 0; for (int i = n;;i++) { if (isPrimer(i)) { index = i; break; } } return index; } static int getDownNum(int n){//获得最近的素数 int index = 0; for (int i = n;i>0;i--) { if (isPrimer(i)) { index = i; break; } } return index; } static boolean isPrimer(int number){ for (int i = 2;i<=Math.sqrt(number);i++) { if (number % i == 0) { return false; } } return true; } }
相关文章推荐
- 快速打开Android虚拟机的方法
- 用Python和OpenCV提取颜色直方图特征
- 韩信点兵
- Java SpringMVC实现国际化整合案例分析(i18n)
- 操作系统 实验三 进程调度模拟程序
- Python的词法分析与语法分析
- 网易实习生笔试题 - 卡密模糊匹配
- codeforces557D 二分图+奇环判断
- 深入浅出: Java回调机制(异步)
- python的string模块中的Template
- PageRank算法在spark上的简单实现
- AP第四贴 实拍曾经的15300ST,爱彼,爱表族论坛 - 爱表族
- VS2010启动多个实例调试
- C语言版本--工资管理系统
- memset calloc malloc
- Spring Security 学习笔记-授权控制过滤器
- Codeforces Round #352 (Div. 2) C - Recycling Bottles
- 判断一个字符串是否全是数字
- json需要的jar包
- python中的socket模块