将一个双数分解成质数之和
将一个偶数分解成质数之和
/* * 目标:将一个偶数,分解成质数之和。 */ public class DisintegrateEvenNumber { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String str = DisintegrateEvenNumber.getDisintegrateResult(14); System.out.println(str); } //判断一个正整数是否是质数 public static boolean isPrimeNum(int inputNum) { boolean result = true; if (inputNum !=0 && inputNum != 1) { for (int i = 2; i < inputNum; i++) { if (inputNum % i == 0) { result = false; break; } } } else { result = false; } return result; } //判断是否是一个偶数 public static boolean isEven(int input) { return !(input % 2 != 0); } /* * 返回给定偶数下的质数求和的表达式 * @input inputNum 给定的偶数 * @return String 返回质数的表达式 */ public static String getDisintegrateResult(int inputNum) { String result = null; if (!DisintegrateEvenNumber.isEven(inputNum)) { result = "Your input is not a Even, please confirm."; } else if(inputNum < 0) { result = "Your input is incorrect, shoube be bigger then 0"; } else { //循环遍历小于inputNum-2的所有数字,找到第一个质数i,并且判断偶数减去质数的值是否是质数,如果是,直接返回。 for (int i = inputNum - 2; i > 0; i--)//排除1 { if (isEven(i)) { continue; } else if (isPrimeNum(i) && isPrimeNum(inputNum - i)) { int tmp = inputNum - i; result = "" + inputNum + " = " + i + " + " + tmp; break; } else { continue; } } } if (result == null) { result = "Your input can not be disintegrated."; } return result; } }