判断一个数是不是回文质数
在博文《P5 判断一个数是不是质数》中,给出了校验一个自然数是否为质数的方法,本文探究如何进一步校验一个自然数是否为回文质数。
本文和散列表除了都要应用校验一个整数是不是素数之外,几乎毫无关联性,感兴趣或者需要的童鞋请继续阅读。
基本概念
设n是一任意自然数,若将n的各位数字反向排列所得自然数n1与n相等,则称n为回文数(palindrome number)。例如:6660666。如果一个数字既是素数又是回文数,就称这个数是回文素数。
问题:兹给定一个闭区间[begin, end],求这个区间内有多少个回文素数。
算法实现
首先,请求《P5判断一个数是不是质数》中校验一个自然是是否为素数的方法,校验自然数,如果是质数,则继续校验是否为回文数。这里采用函数boolean isPrime6(int num)校验是否为质数:
/**
* 以6为步长,校验一个数字是否为质数
* @param num
* @return true is a prime number
*/
public static boolean isPrime6(int num) {
if (num <= 3) {
return num > 1;
}
// 不在6的倍数两侧的一定不是质数
if (num % 6 != 1 && num % 6 != 5) {
return false;
}
int sqrt = 1 + (int) Math.sqrt(num);
//在6的倍数两侧的也可能不是质数
for (int i = 5; i < sqrt; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) {
return false;
}
}
return true;
}
然后,通过对质数取余和取商,借助字符串逐位拼接的方式,获取逆序字符串。最后,判断两个字符串的值是否相等,如果相等,则此数就是回文素数。
完整的实现如下:
public static void main(String[] args) {
int begin = 0, end = 101300;
int ppNum = 0;
for (;begin <= end; begin ++) {
if (isPalindromePrimeNumber(begin)) {
ppNum ++;
}
}
System.out.println("闭区间内的回文质数个数是 " + ppNum);
}
/**
* 判断是不是回文质数,支持把int类型改为long类型
* true 是
* @param num
*/
private static boolean isPalindromePrimeNumber(int num) {
if (isPrime6(num)) {
if (isPalindromeNumber(num)) {
System.out.println("如下数字是回文素数:" + num);
return true;
}
}
// System.out.println("如下数字并非回文素数:" + num);
return false;
}
/**
* 判断是不是回文数
*
* @param num
*/
private static boolean isPalindromeNumber(int num) {
if (num < 10) {
return true;
}
int temp = num;
StringBuilder sb = new StringBuilder();
while (temp > 0) {
sb.append(temp % 10);
temp = temp / 10;
}
if (Integer.parseInt(sb.toString()) == num) {
return true;
}
return false;
}
Reference
https://www.pianshen.com/article/5408325739/
读后有收获,小礼物走一走,请作者喝咖啡。

作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南