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

Java 质数 (prime numbers) 算法实现

一、题目

编写 Java 程序,查找指定范围内的所有质数(素数),质数定义:大于 1,除了 1 和自身,不能被其他自然数整除的整数。

二、质数原理说明

  1. 质数n≥2,2 是最小质数,偶数除 2 以外全不是质数;
  2. 优化判断:只需遍历2 ~ √n,若区间内没有能整除 n 的数,则 n 为质数(因数成对出现,超过平方根无需校验)。

三、Java 代码

public class PrimeDemo { public static void main(String[] args) { // 查找1~100之间所有质数 int max = 100; System.out.println("1~"+max+"之间的质数:"); for(int num = 2; num <= max; num++){ if(isPrime(num)){ System.out.print(num + " "); } } } /** * 判断一个数是否为质数 * @param n 待判断数字 * @return 是质数返回true,否则false */ public static boolean isPrime(int n){ if(n < 2){ return false; } // 遍历2到根号n double sqrt = Math.sqrt(n); for(int i = 2; i <= sqrt; i++){ if(n % i == 0){ // 能被整除,不是质数 return false; } } return true; } }

四、代码解析

  1. isPrime(int n)工具方法
    • 小于 2 直接非质数;
    • 循环上限取√n,大幅减少循环次数,优化性能;
    • 只要存在约数立刻返回false,遍历结束无约数返回true
  2. main 主方法:循环遍历2~max,调用判断方法,输出所有质数。

五、运行结果

1~100之间的质数: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

六、进阶优化思路(博客拓展内容)

  1. 埃氏筛法(高效批量找质数):适合超大范围批量筛选,用布尔数组标记合数,速度远优于逐个判断:
// 埃拉托斯特尼筛法示例 public static void sievePrime(int limit){ boolean[] isPrimeArr = new boolean[limit+1]; // 初始默认全部是质数 Arrays.fill(isPrimeArr,true); isPrimeArr[0] = isPrimeArr[1] = false; for(int i=2; i<=Math.sqrt(limit);i++){ if(isPrimeArr[i]){ // i的倍数全部标记为非质数 for(int j=i*i; j<=limit; j+=i){ isPrimeArr[j]=false; } } } // 输出质数 for(int i=2;i<=limit;i++){ if(isPrimeArr[i]) System.out.print(i+" "); } }
  1. 适用场景:小范围用逐个判断法,十万 / 百万级大范围优先埃氏筛。

七、总结

  1. 基础质数判断核心:平方根优化循环边界,减少冗余运算;
  2. 两种实现方案:单个数校验、批量筛质数,按需选用;
  3. 面试常考点:质数算法优化、埃氏筛原理。
http://www.rkmt.cn/news/1469090.html

相关文章:

  • Veo 2额度用得快?不是你生成多,而是没关这1个默认开关(实测降低76%无效消耗)
  • 深圳艾景特科技:开发者猫叔如何打造面向中国市场的 AI 投研产品
  • 记录AAAAA
  • LeetCode 274 · H 指数:排序后一条规则搞定
  • 联想刃7000K终极BIOS解锁完整指南:简单三步释放硬件全部潜力
  • 某中学sql注入漏洞
  • 2026年东莞办公设备租赁配套服务商盘点:复印机/打印机/电脑租赁、整机组装与监控安装企业参考 - 海棠依旧大
  • 如何高效配置OpenCore引导器:PC运行macOS的完整方案指南
  • PoE网络变压器中共模扼流圈(CMC)的放置与磁饱和问题解析
  • VidDown:一个免费、本地优先的在线工具站(重点:视频解析下载)
  • Python信用评分卡终极指南:从零开始构建专业风险模型
  • Qt 6.0安装后第一件事:用Qt Creator创建你的第一个Hello World程序(Windows平台)
  • 如何用LibreSignage快速构建企业级数字标牌系统
  • 【每日一题】LeetCode 70. 爬楼梯 TypeScript
  • 光子晶体腔设计优化与水环境应用挑战
  • 2026年园艺工具品牌选购参考:绿植营养土、通用营养土、家用营养土、养花营养土、进口营养土、CPAI园艺产品综合梳理 - 海棠依旧大
  • 3分钟搞定Axure RP中文界面:新手也能快速上手的完整汉化教程
  • 2026年6月市面上评价高的消失模铸造件源头厂家推荐,保丽龙泡沫板/泡沫箱/消失模铸造件,消失模铸造件品牌找哪家 - 品牌推荐师
  • VMware虚机如何使用U盘
  • ThreadLocal 内存泄露?别慌,这锅双亲委派背得有点冤!附自愈方案
  • 2026 国内加速版 OpenClaw 安装,解决下载缓慢问题
  • Matlab实现偏置曲柄滑块机构运动学仿真:位移/速度/加速度曲线与误差分析
  • JTAG TAP状态机HDL实现与可观测调试实战
  • 抖音批量下载工具技术解析:从API破解到智能策略切换的架构设计
  • 2026年 缠绕模具厂家/折弯模具/方形模具/玻璃钢缠绕模具/电力设施模具最新推荐榜单:定制工艺与耐用口碑深度解析 - 品牌企业推荐师(官方)
  • 拥抱 Vibe Coding:重构一个现代化智能语音助手 (ClearVoice-ASR)
  • 终极Typora插件大全:62个免费功能增强工具完全指南
  • 企业级 RAG 权限隔离网关实战:从原理到落地
  • 2026年 广东平模厂家推荐排行榜:激光平模/吸塑平模/印刷平模/包装平模/EVA平模/文具平模/皮革平模/鼠标垫平模/内衣服饰平模/精密平模实力甄选 - 品牌企业推荐师(官方)
  • 别再傻傻分不清了!嵌入式开发中UART、I2C、SPI到底怎么选?附ESP32/STM32实战对比