1007 素数对猜想
让我们定义d**n为:d**n=p**n+1−p**n,其中p**i是第i个素数。显然有d1=1,且对于n>1 有d**n是偶数。“素数对猜想”认为“存在无穷多对相邻且差为 2 的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
tex
20
20
输出样例:
tex
4
4
Solution:
java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static boolean isPrime(int n) {
if (n <= 3) return n > 1;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(in.readLine());
int cnt = 0;
for (int i = 5; i <= num; i++) {
if (isPrime(i) && isPrime(i - 2)) cnt++;
}
System.out.println(cnt);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static boolean isPrime(int n) {
if (n <= 3) return n > 1;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(in.readLine());
int cnt = 0;
for (int i = 5; i <= num; i++) {
if (isPrime(i) && isPrime(i - 2)) cnt++;
}
System.out.println(cnt);
}
}