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

myt*_*hic 4 java return

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

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

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

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;
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下,如果我找到一个除数,我返回该数字不是素数(return false),并取代了break第二种方法的需要.唯一明显的原因是第二种方法只使用一个return语句.

有这个原因(速度/记忆明智)?

Mur*_*nik 5

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

就个人而言,我更喜欢只要return你知道结果(就像在第一个片段中),但同样,这是个人风格的问题.