1261: 孪生素数

来源:互联网 发布:武当七侠知乎 编辑:程序博客网 时间:2024/06/18 04:21

题目

Description

在质数的大家庭中,大小之差不超过2的两个质数称它俩为一对孪生素数,如2和3、3和5、17和19等等。请你统计一下,在不大于自然数N的质数中,孪生素数的对数。
Input

只有一行,一个自然数N。(N<=10^6)
Output

只有一行,一个整数,表示N以内孪生素数的对数。
Sample Input

20
Sample Output

5

代码块

import java.util.Scanner;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();    }    private 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;    }}
原创粉丝点击