一个数如果从左往右读和从右往左读数字是完全相同的,则称这个数为回文数,比如898,1221,15651都是回文数。
编写一个程序,输入两个整数min和max,然后对于min~max之间的每一个整数(包括min和max),如果它既是一个回文数又是一个质数,那么就把它打印出来。要求,回文数和质数的判断都要用函数的形式来实现
我的代码实现思路如下:
import java.util.Scanner;
public class 回文数与质数 {
public static void main(String[] args) {
//判断 min ~ max 中那些数即为回文数又为质数
//回文数与质数的判断用方法判断
/*判断方法实现思路(注意:1 既不是回文数也不是质数):
* 1.回文数
* 定义一个返回类型为 int 的有参构造方法,形参为 int a
* 先把 a 强转为 String ,再转成 StringBuilder ,用 reverse() 转置
* 最后再对转置后的字符串与 a 进行判断(注意:1 不是回文数) 一样则返回 a ,不一样则返回 0;
* 2.质数
* 定义一个返回类型为 int 的有参构造方法,形参为 int a
* 用一个for循环对 a % (2++) 判断(注意:a 不能为 1),如果为零直接return 0 结束方法
* 如果能顺利完成 for 循环就return a
* */
Scanner sc = new Scanner(System.in);
int min = sc.nextInt();
int max = sc.nextInt();
for(int i = min ; i <= max ; i++) {
int a = hws(i);
int b = zs(i);
if(a != 0 && b != 0) {
System.out.print(i + " ");
}
}
}
//回文数判断
public static int hws(int a) {
String b = a + "";
StringBuilder sb = new StringBuilder(b);
String c = sb.reverse().toString();//反转后的字符串
if(b.equals(c) && a != 1) {
return a;
}else {
return 0;
}
}
//判断质数
public static int zs(int a) {
for(int i = 2 ; i < a ; i++) {
if(a % i == 0 && a != 1) {
return 0;
}
}
return a;
}
}