这是思路比较简单的方法:先判断回文数再判断是不是质数,唯一卡住的点是必须先判断回文数, 因为回文数的判断条件比较简单,消耗时间短,可以排除一批不合格数据,不然会导致超时
import java.util.Scanner;
/**
* @Author:LiRegin
* @Date: 2021/9/27 15:49:32
*/
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int start = scan.nextInt();
int end = scan.nextInt();
// 排除偶数
// if (start % 2 == 0) start++;
// for (int i = start; i <= end; i += 2) {
for (int i = start; i <= end; i ++) {
// 排除能被2,3,5整除的
// if (i != 2 && i != 3 && i != 5 && (i % 2 == 0 || i % 3 == 0 || i % 5 == 0)) {
// continue;
// }
if (isPalindrome(i)) {
if (isPrime(i)) {
System.out.println(i);
}
}
}
}
/**
* 用于判断一个数是否为质数,若为质数,返回true,否则返回false
*/
private static boolean isPrime(int a) {
boolean flag = true;
if (a < 2) {
return false;
} else {
for (int i = 2; i <= Math.sqrt(a); i++) {
if (a % i == 0) {
flag = false;
break;
}
}
}
return flag;
}
/**
* 用于判断一个数是否为回文数,若为回文数,返回true,否则返回false
*/
private static boolean isPalindrome(int input) {
int output = 0;
int old = input;
boolean ret = false;
while (input > 0) {
output = output * 10 + input % 10;
input = input / 10;
}
if (output == old) {
ret = true;
}
return ret;
}
}