📜  isprime校验公式java(1)

📅  最后修改于: 2023-12-03 15:15:53.444000             🧑  作者: Mango

isPrime 校验公式 Java

isPrime 是一种常用于判断一个数是否为质数的算法,其校验公式为仅能被1和自身整除。

Java 代码实现如下:

public static boolean isPrime(int num) {
    if (num <= 1) {
        return false; // 1不是质数
    }
    for (int i = 2; i <= Math.sqrt(num); i++) {
        if (num % i == 0) {
            return false; // 能被整除,不是质数
        }
    }
    return true;
}

该方法接收一个整数作为参数,并返回一个布尔值,表示该整数是否为质数。具体实现为:

  1. 小于等于1的数不是质数,直接返回 false
  2. 循环遍历 2 到该数平方根之间的所有整数,如果该数能被其中任意一个整数整除(即余数为0),则不是质数,返回 false
  3. 如果循环结束后都没有返回 false,则该数为质数,返回 true
使用示例
System.out.println(isPrime(7)); // true
System.out.println(isPrime(12)); // false
性能优化

这里有几个性能优化的建议。

  1. 对于 num 取模,可以通过位运算进行优化。因为对于2的幂次方,位运算比取模更快。代码实现如下:

    if (num <= 1) {
        return false;
    }
    if (num == 2 || num == 3) {
        return true;
    }
    if (num % 2 == 0 || num % 3 == 0) {
        return false;
    }
    for (int i = 5; i * i <= num; i += 6) {
        if (num % i == 0 || num % (i + 2) == 0) {
            return false;
        }
    }
    return true;
    
  2. 在循环中,可以将循环条件改为 i * i <= num,避免每次都进行开平方根运算,提高效率。

    for (int i = 2; i * i <= num; i++) {
        ...
    }
    
总结

isPrime 校验公式是一种常用的算法,在 Java 中的实现也十分简单。当传入的参数越大时,循环遍历的次数越多,而且很难找到一种快速的方法,只能靠不断优化算法来提高效率。