java 如何判断素数
判断素数的基本方法
素数是大于1的自然数,且只能被1和自身整除。在Java中,可以通过以下方法实现素数判断:
方法1:基础循环判断
通过遍历2到n-1之间的所有整数,检查是否能被n整除。若存在能整除的数,则n不是素数。
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
方法2:优化循环范围
无需遍历到n-1,只需检查2到√n之间的整数。若n能被大于√n的数整除,其对应的因子必然小于√n。
public static boolean isPrimeOptimized(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
方法3:进一步优化(跳过偶数)
除2外,所有偶数都不是素数。可以跳过偶数以减少循环次数。
public static boolean isPrimeFurtherOptimized(int n) {
if (n <= 1) {
return false;
}
if (n == 2) {
return true;
}
if (n % 2 == 0) {
return false;
}
for (int i = 3; i <= Math.sqrt(n); i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
测试示例
调用上述方法并输出结果:
public static void main(String[] args) {
int num = 17;
System.out.println(isPrimeFurtherOptimized(num)); // 输出 true
}
注意事项
- 输入需为正整数,负数和0、1直接返回
false。 - 对于大数(如
Integer.MAX_VALUE),优化后的方法效率更高。 - 更高效的算法(如Miller-Rabin素性测试)适用于极大数,但实现复杂度较高。







