性感素数解法

性感素数 ”、指形如 (p,p+6)(p,p+6) 这样的一对素数。

之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。

现给定一个整数,请你判断其是否为一个性感素数。

输入格式

输入在一行中给出一个正整数 NN。

输出格式

若 NN 是一个性感素数,则在一行中输出 Yes,并在第二行输出与 NN 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。

若 NN 不是性感素数,则在一行中输出 No,然后在第二行输出大于 NN 的最小性感素数。

数据范围

1≤N≤1081≤N≤108

输入样例1:

47

输出样例1:

Yes
41

本题主要思想如下:

1.设计函数进行素数判断

2.判断该数是否为性感素数,求出其和其附近大6和小于6的数是否为素数

3.若判断结果为性感素数,则输出两者符合条件的最小值

4.若判断结果不为性感素数,则进行相应的查找,找出大于其的最下性感素数

代码如下:


import java.util.Scanner;

public class Main{
    public static void main(String [] args){
        Scanner scanner = new Scanner(System.in);
        //输入相应的数
        int num = scanner.nextInt();
        
        if(isSuShu(num) && isSuShu(num - 6)){
            System.out.println("Yes");
            System.out.println(num - 6);
        }else if(isSuShu(num) && isSuShu(num + 6)){
            System.out.println("Yes");
            System.out.println(num + 6);
        }else{
            System.out.println("No");
            search(num);
        }
        
    }

    //判断素数
    public static boolean isSuShu(int n){
        if(n <= 1){
            return false;
        }
        int temp = (int)Math.sqrt(n);
        for(int i = 2; i <= temp; i++){
            //若不为素数
            if(n % i == 0){
                return false;
            }
        }
        //若为素数
        return true;
    }

   //寻找大于其的最小素数
    public static void search(int num){
        //寻找最小素数
        for(int i = num + 1; ;i++){
            if(isSuShu(i) && isSuShu(i - 6) && i - 6 > num){
                System.out.println(i - 6);
                break;
            }else if(isSuShu(i) && isSuShu(i - 6)){
                System.out.println(i);
                break;
            }
            else if(isSuShu(i) && isSuShu(i + 6)){
                System.out.println(i);
                break;
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值