质数判断需先处理n

Java 中判断一个数是否为质数,核心是用流程控制语句(if、for、break)检查它是否**只有 1 和自身两个正因数**。关键在于合理设计循环范围和提前退出逻辑,避免无效计算。
基础逻辑:从 2 到 n-1 逐个试除
最直观的方式是让变量 i 从 2 遍历到 n-1,只要发现某个 i 能整除 n(即 n % i == 0),就说明 n 不是质数。
- 需单独处理边界情况:小于 2 的数(如 0、1)不是质数;2 是最小的质数。
- 一旦找到因子,立即用 break 或 return 结束检查,提升效率。
优化循环范围:只需检查到 √n
若 n 有大于 √n 的因子,必然对应一个小于 √n 的配对因子。因此循环上限设为 (int) Math.sqrt(n) 即可,大幅减少迭代次数。
- 注意:循环变量
i仍从 2 开始;√n 可能不是整数,强制转int向下取整是安全的。 - 例如判断 49:只需试 2~7,发现 7×7=49,立刻判定非质数(实际 49=7×7,不是质数)。
完整可运行示例代码
以下是一个带注释的静态方法,返回 boolean:
public static boolean isPrime(int n) {
if (n
- 额外跳过所有偶数(除2外),进一步节省约一半循环次数。
- 调用时如
isPrime(17)返回true,isPrime(15)返回false。
常见易错点提醒
写质数判断时容易忽略这些细节:
- 忘记处理 n == 1 或 n :它们都不是质数,但常被漏判。
- 循环上限写成 i :导致低效甚至超时(尤其大数)。
- 没考虑 2 的特殊性:直接从 2 开始循环并排除偶数,会导致 2 被误判为非质数。
-
用 double 类型做循环变量:应统一用
int,避免浮点误差和类型转换问题。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











