华为OJ 初级:查找组成一个偶数最接近的两个素数
2016-07-29 22:09
483 查看
述 | 任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对 请实现如下接口 public static class PrimePair { public int primeMin; public int primeMax; } public static PrimePair findPrimeNumber(int number) { /* 请实现 */ return null; } 譬如:输入20 ,输出 7 13约束number为输入的偶数,5 < inum <= 10000 |
---|---|
知识点 | 循环 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个偶数 |
输出 | 输出两个素数 |
样例输入 | 20 |
样例输出 | 7 13 |
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); if( n % 2 == 0 && n > 5 && n <= 1000) //输入只能是偶数,且范围为 5 < n <= 1000 getResult(n); } private static void getResult(int n){ int x = 0; int temp = n; //记录两个素数之间的差值 int n1 = 0; //记录两个素数中较小的那个 int n2 = 0; //记录两个素数中较大的那个 for(int i = 1; i <= n; i++){ if(isPrime(i)){ x = n -i; //i为其中一个素数,如果n-i也为素数,且它们之间的差值小于之前记录的差值,则存储下来 if(isPrime(x) && Math.abs(x-i) <= temp){ temp = Math.abs(x-i); n1 = x > i ? i: x; //记录较小的素数 n2 = x > i ? x: i; //记录较大的素数 } } } System.out.println(n1); System.out.println(n2); } private static boolean isPrime(int n) { //判断是否为素数 if (n == 1) return true; if (n > 1) { for (int i = 2; i < n; i++) { if (n % i == 0) return false; } } return true; } }
相关文章推荐
- 红黑树(插入)
- iframe的优缺点
- python3 比较两个list的结构
- SGU326 perspective 最大流 竞赛排名问题
- centos 配置网卡
- 进阶项目6-日期结构体
- Best Time to Buy and Sell Stock
- HDU 3533 广搜
- strtok()函数的实现
- 全搜索法FS、三步搜索法TSS、菱形搜索法DS
- sql语句那些事——你的脸庞渐渐变得清晰
- POJ 2978 Colored stones
- poj 3259 Wormholes
- Java中循环运算的小练习
- 数组------将数组元素排成最小数
- mount的NFS共享文件夹被误删除处理办法
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- ReportViewer 只报 “本地报表处理期间出错” 其它很多原因的!
- IO流 合并流 SequenceInputStream
- Windows下用最新pip安装pandas