质数判断采用试除法:对n从2到√n遍历,若存在整除则非质数;基础写法是编写isprime函数,用for循环和if条件实现。

用循环和条件控制求质数,核心是判断一个数是否只能被 1 和它本身整除。最常用的方法是“试除法”:对每个待判断的数 n,用从 2 到 √n 的整数依次去试除,只要有一个能整除,n 就不是质数。
基础写法:单个数是否为质数
先写一个判断函数,用 for 循环 + if 条件 实现:
// 判断 n 是否为质数(n >= 2)
public static boolean isPrime(int n) {
if (n
if (n == 2) return true;
if (n % 2 == 0) return false; // 排除偶数
for (int i = 3; i * i // 只试奇数,上限用 i*i 避免开方
if (n % i == 0) return false;
}
return true;
}
打印指定范围内的所有质数
外层用 for 循环遍历区间,内层调用上面的判断逻辑:
// 打印 2 到 100 之间的所有质数
for (int num = 2; num
if (isPrime(num)) {
System.out.print(num + " ");
}
}
优化思路:减少重复计算
如果要频繁判断多个数,可以预处理生成质数表(埃氏筛法),但那是进阶方法。纯用循环+条件时,注意几点:
- 不必检查到 n−1,只需到 √n(因为若 n 有大于 √n 的因数,必对应一个小于 √n 的因数)
- 2 单独处理后,后续只试奇数,跳过所有偶数,效率提升近一倍
- 用
i * i 替代 <code>i ,避免每次调用 Math.sqrt 和类型转换
常见易错点提醒
写的时候容易忽略这些细节:
- 忘记处理 n = 1(不是质数)、n = 2(最小质数)
- 循环起始设成 1 或 2 但没排除自身整除(比如
i = 1总会整除,无意义) - 条件写成
i 导致超时,尤其对大数 - 没加
break或提前return false,导致多余循环
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











