欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1261: 孪生素数

程序员文章站 2024-03-16 15:52:34
...

题目

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;

    }
}