题解 | #双素数#

双素数

http://www.nowcoder.com/practice/8cb1f3979b524ed1ba67b4f64ed9e4f2

import java.util.Scanner;

/**
 * 双素数
 * @Author zhuyq
 * @Date 2021-09-17
 */
public class Main {
    private static int maxVal = 1000000;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println(getMinKDoublePrime(Integer.parseInt(in.nextLine())));
    }



    //输出第k小的双素数
    public static int getMinKDoublePrime(int k){
        int minKDoublePrime = -1;
        int count = 0;
        for(int i=1; i<=maxVal; i++){
            if(isDoublePrime(i)){
                count++;
                if(count==k){
                    minKDoublePrime=i;
                    break;
                }
            }
        }
        if(count<k){
            minKDoublePrime=-1;
        }
        return minKDoublePrime;
    }


    //判断是否是双素数
    public static boolean isDoublePrime(int number){
        boolean isDoublePrime = true;
        if(isPrime(number)){
            int reverseNumber = Integer.parseInt(new StringBuffer(String.valueOf(number)).reverse().toString());
            if(number!=reverseNumber && isPrime(reverseNumber)){
                isDoublePrime=true;
            }
            else{
                isDoublePrime=false;
            }
        }
        else{
            isDoublePrime=false;
        }
        return isDoublePrime;
    }



    //判断是否是素数
    public static boolean isPrime(int data){
        if(data<2) return false;
        for(int i=2;i<=Math.sqrt(data);i++){
            if(data%i==0) return false;
        }
        return true;
    }



}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务