java常用API练习 判断一个数是否为质数


以下是一个用Java编写的判断一个数是否为质数的示例程序:

public class PrimeNumberChecker {
    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        int n = 17;
        if (isPrime(n)) {
            System.out.println(n + " is a prime number.");
        } else {
            System.out.println(n + " is not a prime number.");
        }
    }
}

在上述代码中,isPrime方法接受一个整数参数n并返回一个布尔值,表示n是否为质数。该方法首先检查n是否小于等于1,因为1不是质数。接着,该方法从2开始循环到n的平方根,判断n是否能够被当前循环变量i整除。如果n能够被整除,说明n不是质数,返回false。如果循环结束后仍未找到n的因子,说明n是质数,返回true。

在主方法中,我们使用一个示例数值n=17来测试isPrime方法。如果isPrime返回true,说明17是质数,输出“17 is a prime number.”。否则,说明17不是质数,输出“17 is not a prime number.”。

除了上述示例中的方法,还有一些其他方法可以用于判断质数,例如:

public static boolean isPrime(int n) {
    if (n <= 1) {
        return false;
    }
    if (n == 2 || n == 3) {
        return true;
    }
    if (n % 2 == 0 || n % 3 == 0) {
        return false;
    }
    int sqrtN = (int) Math.sqrt(n) + 1;
    for (int i = 6; i <= sqrtN; i += 6) {
        if (n % (i - 1) == 0 || n % (i + 1) == 0) {
            return false;
        }
    }
    return true;
}

在这个方法中,我们先判断n是否小于等于1,如果是则返回false。接着,我们判断n是否等于2或3,如果是则返回true。这是因为2和3都是质数。然后,我们判断n是否能被2或3整除,如果是则返回false。接下来,我们从6开始循环,每次循环加6,这是因为除2和3以外的所有质数都可以表示为6k±1的形式,其中k是一个整数。我们循环到n的平方根加1,判断n是否能被6k-1或6k+1整除。如果n能够被整除,说明n不是质数,返回false。如果循环结束后仍未找到n的因子,说明n是质数,返回true。

这两个方法的效率相对较高,但第二个方法更快一些,因为它少了一些循环次数。在实际开发中,应该根据具体情况选择合适的方法。


原文链接:codingdict.net