解决方案 »

  1.   

    题目挺好的.
    思路:应该满足以下条件:一个二位数,一个三位数,每一位都是素数.二位数的 个位/十位/以及本身 乘以三位数结果每位都是素数.写一个判断一个数字每一位都是素数的方法.穷举所有可能性,满足以上条件就可以了.
    穷举的思路:最简单将 2,3,5,7 写成一个数组,然后套5个循环,把每种可能性给遍历出来,满足条件则输出.
    另一种是递归来遍历:int[] primes = new int{2,3,5,7};
    int[] nums = new int[5];
    //省略判断成功函数success();
    //main 方法这么调用:solve(0);
    private void solve(int depth){
    if(depth >= 5){
    if(success(nums)){
    System.out.println(Arrays.toString(nums));
    }
    return;
    }
    for(int p:primes){
    nums[depth] = p;
    solve( ++depth );
    }
    }
      

  2.   


    List<Integer> list1 = new ArrayList<Integer>();
            int[] array = new int[]{2, 3, 5, 7};
            for (int i = 0; i < array.length; i++) {
                for (int j = 0; j < array.length; j++) {
                    for (int k = 0; k < array.length; k++) {
                        list1.add(Integer.parseInt(array[i] + "" + array[j] + "" + array[k]));
                    }
                }
            }
            List<Integer> list2 = new ArrayList<Integer>();
            for (int i = 0; i < array.length; i++) {
                for (int j = 0; j < array.length; j++) {
                    list2.add(Integer.parseInt(array[i] + "" + array[j]));
                }
            }
            for (int i = 0; i < list1.size(); i++) {
                for (int j = 0; j < list2.size(); j++) {
                    int v = list1.get(i) * list2.get(j);
                    int v1 = list1.get(i) * (list2.get(j) % 10);
                    int v2 = list1.get(i) * (list2.get(j) / 10);
                    if (String.valueOf(v).matches("[2357]{5}") && String.valueOf(v1).matches("[2357]{4}") && String.valueOf(v2).matches("[2357]{4}")) {
                        System.out.println("   " + list1.get(i));
                        System.out.println("*   " + list2.get(j));
                        System.out.println("-----------");
                        System.out.println("  " + v2);
                        System.out.println(" " + v1);
                        System.out.println("-----------");
                        System.out.println(" " + v);
                    }
                }
            }