java - 我的 isPrime 方法有什么问题?

标签 java function methods primes

这是我的 isPrime 方法:

private static boolean isPrime(int num) {
    if (num % 2 == 0) return false;
    for (int i = 3; i * i < num; i += 2)
        if (num % i == 0) return false;
    return true;
}

我输入 isPrime(9),它返回 true。方法有什么问题?

最佳答案

你的条件应该是 i * i <= num

private static boolean isPrime(int num) 
{
        if (num == 2) 
            return true;
        if (num < 2 || num % 2 == 0) 
            return false;
        for (int i = 3; i * i <= num; i += 2)
            if (num % i == 0) 
                return false;
        return true;
}

您没有考虑数字 9,因此 9<9 的结果为假。但是你需要勾选 9。

关于java - 我的 isPrime 方法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798391/

相关文章:

访问成员 unordered_map 中的数据时,C++ const 方法在结构中编译错误

Java ArrayList<Double> 中不存在索引

android - 函数没有被调用 Kotlin

java - webview 没有在 javafx 中打开弹出窗口

c - 从文件中分配一个 char* 数组

javascript - 如何让javascript函数调用两个div

java - 返回数组的简单方法

java - 如何识别返回的对象是否是在方法执行期间创建的 - Java

java - Spring Cloud Stream与RabbitMQ Binder,如何应用@Transactional?

java - 如何使用可变长度字符串标记列