解题思路
- 题目的意思就是求出小于我们输入数的所有相邻两个素数中差为2的所有素数对
- 首先将范围内的所有素数求出并装入数组中
- 每当数组内有相邻的两个素数差为二,计数加一
~~
源代码如下
~~
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(bf.readLine());
int cnt = 0;
int count = 0;
int p[] = new int[a + 1];
for (int i = 0; i < p.length; i++) {
if (isPrime(i))
p[count++] = i;
}
for (int j = 0; j < count - 1; j++) {
if ((p[j + 1] - p[j]) == 2)
cnt++;
}
System.out.println(cnt);
}
public static boolean isPrime(int n) {
if (n < 2)
return true;
for (int i = 2; i <= (int) Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
}