給定一個正整數,編寫程序計算有多少對質數的和等於輸入的這個正整數,並輸出結果。

    問題描述:給定一個正整數,編寫程序計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入爲10,程序應該輸出結果爲2。(共有兩對質數的和爲10,分別爲(5,5),(3,7))java

附算法代碼:算法

public class PrimeNumber {

	//判斷是不是質數
	protected boolean isPrimeNumber(int num){
		if(num == 2) return true;//2特殊處理
		if(num < 2 || num % 2 == 0) return false;//識別小於2的數和偶數
		for(int i=3; i<=Math.sqrt(num); i+=2){
			if(num % i == 0){//識別被奇數整除
				return false;
			}
		}
		return true;
	}
	
	//獲取質數和的個數
	public int getPNSum(int num) throws Exception{
		if(num < 1 || num >= 1000){
			throw new Exception("請輸入正整數並小於1000");
		}
		int sum = 0;
		//單獨考慮2
		if(isPrimeNumber(num - 2)){
			++sum;
		}
		for(int i=3; i<=(num/2); i+=2){
			if(isPrimeNumber(i) && isPrimeNumber(num - i)){
				++sum;
			}
		}
		return sum;
	}
	
	//測試代碼
	public static void main(String[] args) {
		try {
			PrimeNumber pn = new PrimeNumber();
			int sum = pn.getPNSum(10);
			System.out.println("結果:"+sum);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
相關文章
相關標籤/搜索