当前位置: 代码迷 >> 综合 >> 1007 素数对猜想 (20分)详解java
  详细解决方案

1007 素数对猜想 (20分)详解java

热度:99   发布时间:2024-02-06 18:10:29.0

让我们定义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);}
}