不了解筛选法,还请自行百度,筛选法可以快速求的素数,不多说,直接上代码伺候!
/**
* 功能:筛选法求素数(主要是素数倍数的数,肯定不是素数)
* @author Smilexs
* @param severalPrime 第几个素数
*/
public void getPrime(int severalPrime){
if(severalPrime<=0||severalPrime==1){
System.out.println("第1个素数是:2");
return;
}
int [] a =new int[severalPrime];//存放素数 的 数组
int index=0;//数组下标
a[index]=2;//第一个素数=2
for(int n=3;;n++){
boolean flag=true;//标记是否是 素数,每次循环假定是 素数
/*
* 关键:
* 数组中遍历,n是否是数组里面某个数的倍数
* Math.sqrt(index) 大大大的提高了 运算速度
*/
for(int j=0;j<=Math.sqrt(index);j++){
if(n%a[j]==0){
flag=false;//不是素数,直接下一轮
break;
}
}
if(flag){
index++;
a[index]=n;//是素数 存放数组里
}
if(index==severalPrim