题目描述
在质数的大家庭中,大小之差不超过2的两个质数称它俩为一对孪生素数,如2和3、3和5、17和19等等。请你统计一下,在不大于自然数N的质数中,孪生素数的对数。
输入
只有一行,一个自然数N。(N<=10^6)
输出
只有一行,一个整数,表示N以内孪生素数的对数。
样例输入
20
样例输出
5
import java.util.*; public class Main{ public static void main(String[] args) { Scanner cn = new Scanner(System.in); int n = cn.nextInt(); int[] a = new int[n]; int k =0; for(int i = 2;i<=n;i++){ if(isPrime(i)){ a[k] = i; k++; } } int count=0; for(int i =0;i<k-1;i++){ if(a[i+1]-a[i]<=2){ count++; } } System.out.println(count); cn.close(); } public static boolean isPrime(int i) { if(i==2) return true; if(i%2==0||i<2) return false; int m =(int) Math.sqrt(i); for(int c = 3;c<=m;c+=2){ if(i%c==0) return false; } return true; } }