当前位置: 首页 > news >正文

「Java案例」利用方法求反素数

编写方法求求反素数

反素数(Emirp)是素数中一个有趣的变种,它本身是素数,反转后的数字也是素数,并且不能是回文数。

反素数基础实现

编写一个程序,要求编写方法public static boolean isPrime(int num)判断是否为素数;编写方法public static int reversal(int number)实现数字倒置;编写方法public static boolean isEmirp(int num)判断是否为反素数;编写方法public static void showEmirps(int count)显示前N个反素数。

# 源文件保存为“EmirpNumbers.java”
public class EmirpNumbers {// 判断是否为素数public static boolean isPrime(int num) {if (num <= 1) return false;if (num == 2) return true;if (num % 2 == 0) return false;for (int i = 3; i * i <= num; i += 2) {if (num % i == 0) return false;}return true;}// 数字倒置public static int reversal(int number) {int reversed = 0;while (number != 0) {reversed = reversed * 10 + number % 10;number /= 10;}return reversed;}// 判断是否为反素数public static boolean isEmirp(int num) {int reversed = reversal(num);return num != reversed && isPrime(num) && isPrime(reversed);}// 显示前N个反素数public static void showEmirps(int count) {int found = 0, num = 2;while (found < count) {if (isEmirp(num)) {System.out.printf("%6d", num);if (++found % 10 == 0) System.out.println();}num++;}}public static void main(String[] args) {System.out.println("前30个反素数:");showEmirps(30);}
}

运行结果

前30个反素数:13    17    31    37    71    73    79    97   107   113149   157   167   179   199   311   337   347   359   389701   709   733   739   743   751   761   769   907   937

代码解析

  • isPrime方法通过试除法判断素数,优化了偶数检查
  • reversal方法通过模运算和整数除法实现数字倒置
  • isEmirp方法组合前两个方法,并排除回文数情况
  • showEmirps方法从2开始逐个检查,直到找到足够数量的反素数

变体案例解析

双反素数

编写一个程序,要求编写方法public static boolean isPrime(int num)判断是否为素数;编写方法public static int reversal(int number)实现数字倒置;编写方法public static boolean isEmirp(int num)判断是否为反素数;编写方法public static void showDoubleEmirps(int count)寻找反转前后都是反素数的特殊数。

# 源文件保存为“EmirpNumbers.java”
public class EmirpNumbers {// 判断是否为素数public static boolean isPrime(int num) {if (num <= 1) return false;if (num == 2) return true;if (num % 2 == 0) return false;for (int i = 3; i * i <= num; i += 2) {if <
http://www.dtcms.com/a/288632.html

相关文章:

  • Facebook 开源多季节性时间序列数据预测工具:Prophet 饱和预测 Saturating Forecasts
  • dynamic_cast的实现原理
  • Beamer-LaTeX学习(教程批注版)【6】
  • Elasticsearch 简化指南:GCP Google Compute Engine
  • GPT-4o mini TTS:领先的文本转语音技术
  • 随着GPT-5测试中泄露OpenAI 预计将很快发布 揭秘GPT-5冲击波:OpenAI如何颠覆AI战场,碾压谷歌和Claude?
  • prometheus 黑盒监控和docker检测
  • mysql第三次作业
  • 学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
  • 【Go语言-Day 22】解耦与多态的基石:深入理解 Go 接口 (Interface) 的核心概念
  • 【详细笔记】两类曲线积分转换
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • Docker Desktop 入门教程(Windows macOS)
  • 深度学习图像分类数据集—百种病虫害分类
  • Python绘图小工具开发:从零构建数据可视化利器
  • 股票及金融笔记
  • 如何升级Docker部署的Dify
  • Materials Studio学习笔记(二十九)——尿素的几何优化
  • 私有云新势力:Puter+CPolar如何低成本替代商业网盘?
  • 【Linux性能优化】常用工具和实战指令
  • 小架构step系列20:请求和响应的扩展点
  • 制作mac 系统U盘
  • macOs上交叉编译ffmpeg及安装ffmpeg工具
  • pages.json页面路由中,globalStyle的各个属性
  • RPG62.制作敌人攻击波数二:攻击ui
  • 分布式文件系统04-DataNode海量数据分布式高可靠存储
  • 【LeetCode数据结构】单链表的应用——环形链表问题详解
  • 【PTA数据结构 | C语言版】哈夫曼树的实现