Java之實現:篩選法求素數

不瞭解篩選法,還請自行百度,篩選法可以快速求的素數,不多說,直接上代碼伺候!

	/**
	 * 功能:篩選法求素數(主要是素數倍數的數,肯定不是素數)
	 * @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]);
	}

結果:
  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章