1007 素数对猜想 (20 分)
让我们定义 d n d_{n} dn 为: d n = p n + 1 − p n d_{n}=p_{n+1}−p_{n} dn=pn+1−pn,其中 p i p_{i} pi是第i个素数。显然有 d 1 d_{1} d1=1,且对于n>1有 d n d_{n} dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
【输入格式】
输入在一行给出正整数N。
【输出格式】
在一行中输出不超过N的满足猜想的素数对的个数。
【输入样例】
20
【输出样例】
4
import java.util.Scanner;
public class Pat_1007 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] prime = new int[n + 1];
// 用素数筛选法进行素数的快速查找:素数一定是奇数,素数的倍数一定不是素数。
// 定义数组prime[]对N以内的数进行标记,奇数存为1,偶数存为0,最终实现结果为素数的prime值为1
for (int i = 3; i <= n; i = i + 2) {
prime[i] = 1;
}
prime[2] = 1;
for (int i = 3; i <= n; i = i + 2) {
for (int j = 3; j * i <= n; j += 2) {
prime[j * i] = 0;
}
}
int count = 0;
int temp = 2;
for (int i = 3; i <= n; i = i + 2) {
if (prime[i] == 1) {
if (2 == i - temp)
count++;
temp = i;
}
}
System.out.println(count);
}
}