java - 这两种检查数字是否为质数的方法有什么区别?

标签 java return

我写了一个检查数字是否为质数的方法:

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

在我们正在学习的一系列练习中,解决方案是:

static boolean isPrime(int x) {
    boolean hasDivisors = false;
    for (int i = 2; i <= Math.sqrt(x); i++) {
      if (x % i == 0) {
        hasDivisors = true;
        break;
      }
    }
    return !hasDivisors;
}

在我的例子中,如果我找到一个除数,我会返回该数字不是素数(return false),这将取代 break 秒方法。唯一其他明显的原因是第二种方法仅使用单个 return 语句。

这有什么原因吗(速度/内存方面)?

最佳答案

主要是风格问题。一些编码约定规定一个方法只有一个 return 语句。这在您必须显式释放资源的语言中很有意义,但在 Java 中没有任何功能影响。

就我个人而言,我更喜欢在您知道结果后立即返回(就像在第一个代码段中那样),但同样,这是个人风格的问题。

关于java - 这两种检查数字是否为质数的方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290577/

相关文章:

java - 错误: [Dagger/MissingBinding] error message doesn't make sense

java play 框架覆盖注释失败,java.source=1.6

java - 在Java中对多维字符数组进行排序

java - 更新寄存器时 hibernate (JpaRepository) 中的完整性约束问题

javascript - 为什么 foo2() 在这里返回 undefined ?

java - 在 OutputStream 上调用 close() 会切断日志文件的输出

c# - 如果在 using block 中调用 return,那么幕后操作的顺序是什么?

sql - PostgreSQL 通过 UPDATE/INSERT 查询返回受影响的行

javascript - 跳出嵌套循环 : return or label/break?

Java && ||在 RETURN 语句中?