A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我们国家在1949年建国。如果只给你 1 9 4 9 这4个数字卡片,可以随意摆放它们的先后顺序(但卡片不能倒着摆放啊,我们不是在脑筋急转弯!),那么,你能组成多少个4位的素数呢?

    比如:1949,4919 都符合要求。
要求打印出这些素数。

4 个回复

倒序浏览
先全排列再判断素数就可以了
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
回复 使用道具 举报
进行排序,最后在用判断语句进行选择,最后输出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马