有一个数组,假设是{2,3}。。那么他的子集数包括{2}{3}{2,3},这个称为子包。每个子包的数据和是2,3,5.他们都是素数,那就叫素数包。现在设计个程序,入口是数组,出口是数字(素数包的个数)。
就是求一个数组拆解后能有多少个素数包
------解决方案--------------------
劣质代码,抛砖引玉
- Java code
public class Test { public static void main(String[] args) { int[] array = {2, 3, 4, 5,6}; System.out.println(test(array)); System.out.println(); array = new int[]{2, 3}; System.out.println(test(array)); } public static int test(int[] array) { int result = 0; int limit = (int) Math.pow(2, array.length); for (int i = 1; i < limit; i++) { int sum = 0; for (int j = 0; j < array.length; j++) { int num = i >> j; if ((num & 1) != 0) { sum += array[j]; } } if (checkPrim(sum)) { System.out.println(sum); result++; } } return result; } public static boolean checkPrim(int number) { for (int i = 2; i * i <= number; i++) { if (number % i == 0) { return false; } } return true; }}