让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:20输出样例:
4
------------------------------------------------------------------------------
//基本思路就是,调用函数判断当前数字和下一个数字是不是素数,如果是,则分别存于p和q当中,下一次更新时,将q赋值给p,q重新被赋值为新的素数,判断q-p==2
import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int m = in.nextInt(); boolean flag = false; int count = 0; int p = 0; int q = 2; for(int i = 3;i<=m;i++){ flag = isprime(i); if(flag){ p = q; q = i; if(q-p ==2 ){ count ++; } } } System.out.print(count); } private static boolean isprime(int i) { // TODO Auto-generated method stub boolean flag = true; int k = (int) Math.sqrt(i); for(int j=2;j<=k;j++){ if(i%j==0){ flag = false; } } return flag; } }