CGZY2.4 判断可逆素数(*)

该代码片段展示了如何在Java中判断一个整数是否为可逆素数。程序首先定义了一个isPrime方法来检查一个数是否为素数,然后通过numReverse方法将输入的整数反转。主函数中获取用户输入,如果输入的数及其反转后的数都是素数,则输出yes,否则输出no。提供的样例输入23输出no,因为23的反转32不是素数。
摘要由CSDN通过智能技术生成

【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断

【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。

【样例输入】23
【样例输出】no

【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。

import java.util.Scanner;

public class Main24 {

	public static void main(String[] args) 
	{
        Scanner in=new Scanner(System.in);
        String str=in.next();
        if(Integer.parseInt(ReverseNumber(str))>0) 
        {
            ReverseNumber(str);
//          System.out.println(ReverseNumber(str));
            int n=Integer.parseInt(ReverseNumber(str));
            isPrime(n);
        }
	}
	
	public static String ReverseNumber(String str)
	{
		return new StringBuffer(str).reverse().toString();
	}

	public static void isPrime(int n)
	{
         int i=2;
         for(; i<n; i++)
         {
             if(n%i==0)
             {
                 System.out.println("no");
                 break;
             }
         }
         if(n==i)
         {
             System.out.println("yes");
         }
     }
}
*这段代码有点问题,测试用例覆盖不全面,希望大家有意见的反馈在评论区,谢谢啦!*
import java.util.Scanner;

public class Main24 
{

	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		String res = isPrime(a) && isPrime(numReverse(a))? "yes":"no";
		System.out.println(res);
		sc.close();
	}
	
    public static boolean isPrime(int n) //判断是不是素数
    {
    	for (int i = 2; i <= n/2; i++) 
        {
            if (n % i == 0) 
            {
                return false;
            }
        }
        return true;
    }

    public static int numReverse(int n) //将数字反转
    {
//    	String str = n + "";
    	String str = Integer.toString(n); //转int为String型
    	String reverse = new StringBuffer(str).reverse().toString(); //反转字符串
    	int num = Integer.parseInt(reverse); //转字符串为整型
    	return num;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值