让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
Note:
1. 自然数2是第一个素数,从3开始遍历,直到n,找素数,为了不超过时间限制,开根号
2. 题目要求相邻之差小于 2 ,所以找到下一个素数,与上一个素数相减得2 ,则计数加一。对上一个素数重新赋值,继续查找下一个素数。
代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int cnt = 0;int a = 2;
for(int i = 3; i<=n; i++){
boolean flag = true;
for(int j = 2; j<=Math.sqrt(i); j++){
if(i%j == 0){
flag = false;
break;
}
}
if(flag ){
//System.out.println(i);
if(i-a==2)
cnt++;
a = i;
}
}
System.out.println(cnt);
}
}