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