前言
牛客網(wǎng)PAT乙級訓(xùn)練1039
題目描述
讓我們定義 dn 為:dn = pn+1 - pn ,其中 pi 是第i個(gè)素?cái)?shù)。顯然有 d1 =1 且對于n>1有 dn 是偶數(shù)。“素?cái)?shù)對猜想”認(rèn)為“存在無窮多對相鄰且差為2的素?cái)?shù)”。
現(xiàn)給定任意正整數(shù)N (< 105 ),請計(jì)算不超過N的滿足猜想的素?cái)?shù)對的個(gè)數(shù)。
輸入描述
每個(gè)測試輸入包含1個(gè)測試用例,給出正整數(shù)N。
輸出描述
每個(gè)測試用例的輸出占一行,不超過N的滿足猜想的素?cái)?shù)對的個(gè)數(shù)。
輸入例子
20
輸出例子
4
解析
讀完題后其實(shí)理解起來并不難,輸入一個(gè)數(shù)后,把所有不小于這個(gè)數(shù)并且又是素?cái)?shù)的放入一個(gè)集合中,然后比較差,差為2的計(jì)數(shù)器加一,最后輸出結(jié)果即可。
解決方案
以下是本題的其中一個(gè)解法:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int count = 0;
ArrayList<Integer> arrayList = new ArrayList();
for (int i = 1; i <= num; i++) {
if (isSuShu(i)) {
arrayList.add(i);
}
}
for (int i = 1; i < arrayList.size(); i++) {
if (arrayList.get(i) - arrayList.get(i-1) == 2) {
count++;
}
}
System.out.println(count);
}
public static boolean isSuShu(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}