当前位置: 代码迷 >> J2SE >> 一个笔试题,该如何处理
  详细解决方案

一个笔试题,该如何处理

热度:42   发布时间:2016-04-24 02:10:31.0
一个笔试题
有一个数组,假设是{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;    }}
  相关解决方案