PAT 1007. 素數對猜想 (20);判斷一個數為素數;java實現
阿新 • • 發佈:2019-01-04
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())); } }