問題描述:給定一個正整數,編寫程序計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於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(); } } }