不瞭解篩選法,還請自行百度,篩選法可以快速求的素數,不多說,直接上代碼伺候!
/**
* 功能:篩選法求素數(主要是素數倍數的數,肯定不是素數)
* @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==severalPrime-1)break;
}
System.out.println("第"+severalPrime+"個素數是:"+a[severalPrime-1]);
}
結果: