黑马程序员技术交流社区

标题: 一个组素数的问题,求解题思想及代码?? [打印本页]

作者: 王广亚    时间: 2013-6-30 09:54
标题: 一个组素数的问题,求解题思想及代码??
我们国家在1949年建国。如果只给你 1 9 4 9 这4个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个4位的素数呢?

    比如:1949,4919 都符合要求。
要求打印出这些素数。
作者: 王靖远    时间: 2013-6-30 10:00
先全排列再判断素数就可以了
作者: 王靖远    时间: 2013-6-30 10:21
  1. import java.util.*;
  2. class Demo2
  3. {
  4.         private static int NUM = 4;
  5.         private static List<Integer>al1 = new ArrayList<Integer>();
  6.         public static void main(String[] args)
  7.         {
  8.                 Integer []integer = {1,9,4,9};
  9.                 List<Integer>list = new ArrayList<Integer>(Arrays.asList(integer));
  10.                 method(list,new ArrayList<Integer>());

  11.                 for(Integer i : al1)
  12.                 {
  13.                         if(suShu(i))
  14.                                 System.out.println(i);
  15.                 }
  16.         }
  17.         private static void method(List<Integer>list,List<Integer>list1){
  18.        
  19.                
  20.                 if(list1.size()== NUM){
  21.                         Integer [] arr = list1.toArray(new Integer[list1.size()]);
  22.                         StringBuilder sb = new StringBuilder();
  23.                         for(int x=0;x<arr.length;x++){
  24.                                 sb.append(arr[x]);
  25.                         }
  26.                         String s = new String(sb);
  27.                         al1.add(Integer.parseInt(s));
  28.                        
  29.                         return;
  30.                 }
  31.                
  32.                 //System.out.println(list.size());
  33.                 for(int x=0;x<list.size();x++){
  34.                        
  35.                         List<Integer>newList = new ArrayList<Integer>(list);
  36.                         List<Integer>newList1 = new ArrayList<Integer>(list1);
  37.                         newList1.add(newList.get(x));
  38.                         newList.remove(x);
  39.                         method(newList,newList1);
  40.                        
  41.                 }
  42.         }
  43.         public static boolean suShu(int i)//定义一个判断是否为素数的方法。
  44.         {
  45.                 int count = 0;
  46.                 if (i == 1)
  47.                         return false;
  48.                 for(int x=1;x<=i;x++)
  49.                 {
  50.                         if((i%x)==0)
  51.                                 count++;
  52.                 }
  53.                 if(count>2)
  54.                         return false;
  55.                 else       
  56.                         return true;
  57.                
  58.         }
  59. }
复制代码

作者: 王广亚    时间: 2013-6-30 16:14
王靖远 发表于 2013-6-30 10:21

谢谢,明了
作者: lanbuohan    时间: 2013-6-30 18:52
进行排序,最后在用判断语句进行选择,最后输出




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2