1. 程式人生 > >PAT 1007. 素數對猜想 (20);判斷一個數為素數;java實現

PAT 1007. 素數對猜想 (20);判斷一個數為素數;java實現

1007. 素數對猜想 (20)

時間限制 400 ms
記憶體限制 65536 kB
程式碼長度限制 8000 B
判題程式 Standard 作者 CHEN, Yue

讓我們定義 dn 為:dn = pn+1 - pn,其中 pi 是第i個素數。顯然有 d1=1 且對於n>1有 dn 是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。

現給定任意正整數N (< 105),請計算不超過N的滿足猜想的素數對的個數。

輸入格式:每個測試輸入包含1個測試用例,給出正整數N。

輸出格式:每個測試用例的輸出佔一行,不超過N的滿足猜想的素數對的個數。

輸入樣例:
20
輸出樣例:
4

提交代

import java.util.ArrayList;
import java.util.Scanner;

public class Main{  
//判斷一個數為素數
  public static boolean isPrime(int num){
    boolean flag = true;
    if(num<2){
      return flag=false;
    }else{
      for(int i=2;i<=Math.sqrt(num);i++ ){
        if(num%i==0){
          flag = false;
          break;
        }
      }
    }
    return flag;
  }
 //將小於或等於輸入的素數放進一個動態陣列中
  public static ArrayList< Integer> primeArr(int num2){
    ArrayList<Integer> primeArrList = new ArrayList<>();
    for(int i=0;i<=num2;i++){
      if(isPrime(i)){
        primeArrList.add(i);
      }
    }
    return primeArrList;
  }
 //計算滿足條件的素數對的個數並返回
  public static int numOfPriPairs(ArrayList<Integer> ArrList){
    int count=0;
    for(int i=0;i<ArrList.size()-1;i++){
      if(ArrList.get(i+1)-ArrList.get(i)==2){
        count++;
      }
    }
    System.out.println(count);
    return count;
  }
  
  
  public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    numOfPriPairs(primeArr(scan.nextInt()));  
  }
}