package com.heu.wsq.pta.a1007;
import java.util.Scanner;
/**
* 1007 素数对猜想
* @author wsq
* @date 2020/11/29
* 让我们定义dn为:dn = pn+1 − pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5
* ),请计算不超过N的满足猜想的素数对的个数。
*
* 输入格式:
* 输入在一行给出正整数N。
*
* 输出格式:
* 在一行中输出不超过N的满足猜想的素数对的个数。
*
* 输入样例:
* 20
* 输出样例:
* 4
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int ans = 0;
if(n < 5){
ans = 0;
}else{
ans = 0;
int pre = 3;
for(int curr = 5; curr <= n; curr += 6){
if(isPrime(curr) && curr - pre == 2){
ans++;
}
if (isPrime(curr) && curr + 2 <= n && isPrime(curr + 2)){
ans++;
}
if(isPrime(curr + 2)){
pre = curr + 2;
}
}
}
System.out.println(ans);
}
private static boolean isPrime(int num) {
if (num < 2){
return false;
}
if (num == 2 || num == 3){
return true;
}
if (num % 6 != 1 && num % 6 != 5){
return false;
}
int tmp = (int) Math.sqrt(num);
for(int i = 5; i <= tmp; i+=6){
if(num % i == 0 || num % (i+2) == 0){
return false;
}
}
return true;
}
}
1007 素数对猜想
最新推荐文章于 2022-02-26 16:49:43 发布