让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<10?5??),请计算不超过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);}
}