所谓回文素数是指对一个素数n,从左向右和从右向左是相同的,即称n为回文素数。(含代码详细注释和输出结果截图)
参考代码如下:
public class PalPrime {
//按顺序输出100个回文素数
public static void main(String[] args) {
int count = 0; //定义一个控制变量count,用于控制输出格式
//设置范围,最小的素数是2,所以i由2开始
for(int i = 2;count < 100;i++){
//如果i是素数,且i还是回文数,那就输出
if(isPrime(i) && isPalindrome(i)){
System.out.print(i + " ");
count++;
if(count % 20 == 0) //控制输出格式,每行输出20个
System.out.println();
}
}
}
//定义一个方法isPrime(),用于判断是否为素数,返回值为boolean型
public static boolean isPrime(int num) {
for(int i = 2;i <= Math.sqrt(num);i++) //节省资源
if(num % i == 0)
return false;
return true;
}
//定义一个方法reversal(),用于实现反转原数,即将原数逆序输出
static int reversal(int num) {
int result = 0; //先定义一个变量,用于存储逆序后的结果,初值为0
/*
* 举个栗子:
* 假设现在传进来的 num = 181;
* 先计算出num % 10 = 1,再计算num / 10 = 18;
* 即:result = 1; num = 18;
* 继续进行计算,直到 num = 0,跳出while循环,最终result的值就是逆序后的结果
* num % 10 = 8; num / 10 = 1;
* 即:result= 18; num = 1
* num % 10 = 1; num / 10 = 0;
* 即:result = 181; num = 0;
*/
while(num != 0){
int lastDigit = num % 10; //取余
result = result * 10+ lastDigit; //重新组合
num = num / 10; //求商
}
return result;
}
//定义一个方法isPalindrome(),用于判断是否为回文数
static boolean isPalindrome(int num) {
return num == reversal(num); //判断原数是否与逆序数相同
}
}
输出结果截图如下: