非常感谢!!

解决方案 »

  1.   

    PrimeNumberTest.java
    ==============================================
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    public class PrimeNumberTest {
        /** Creates a new instance of PrimeNumberTest */
        public PrimeNumberTest() {
        }
        public static void main(String[] args){
            //获得一个4位数的随机大素数
           long longVar4 = createRadomPrimeNunber(4);
           System.out.println(longVar4);
           //获得一个5位数的随机大素数
           long longVar5 = createRadomPrimeNunber(5);
           System.out.println(longVar5);
        }
        
        
        public static long createRadomPrimeNunber(int n){
            long recLong = 0;
            List list = listAllPrimeNumber(n);
            Random rd = new Random();
            int randomIndex = Math.abs( rd.nextInt()%list.size());
            recLong = ((Long)list.get(randomIndex)).longValue();
            return recLong;
           
        }
        public static List listAllPrimeNumber(int n){
            List list = new ArrayList();
            long low = (long)Math.pow(10,n-1);
            long high = (long)Math.pow(10,n) - 1;
            for(long i= low;i < high;i++){
                if( isSushu(i)) {
                    list.add(new Long(i));
                }
            }
            return list;
        }
        public static boolean isSushu(long x){//定义一个判断一个数是否是素数的函数
            if(x<2) return false;
            if( x==2)return true;
            for(long i=2;i<= (long)Math.sqrt(x);i++)
                if(x%i==0) return false;
            return true;
        }
    }
      

  2.   

    将一下实现的原理给lz知道
    首先,根据题目的意思,必须是素数,所以必须有一个函数判断一个数是不是素数然后,要指定位数的,怎么办呢,我们可以先将指定位数的数中的所有的素数都找出来,放到一个
    数组list里,这样问题就变成了,从list里随机取一个数出来了如指定5位数,则从10000-99999中,找出所有的素数,放到一个数组list里去(测试结果是8363个素数,也就是说list.size() = 8363)接着我们处理最后一个问题,生成一个 0 - 8363之间的随机数作为索引,根据此索引将list里的这个数取出来,就顺利将题目的要求实现了.