繁体   English   中英

测试数字在Java中是否为质数

[英]Test if the number is prime in Java

测试数字是否为质数:

这是我的代码:

public static boolean isPrime(int x){
      if(x<=1) 
         return false;
      else if(x==2) 
         return true;
      else {
         for(int i=2; i<=x/2; i++){                        
             if(x%i==0) 
                return false;
         }
         return true;
      }
   }

我的问题是:最后一个语句“ return true”,如果数字为质数,则没有错误返回,但是如果数字不是质数,则在for循环期间,将有错误返回。 循环结束后,程序将执行以下for循环的语句-'return true'。 所以我想知道返回的true是否将覆盖在for循环期间发生的返回的false。 (尽管当我测试此代码时,该代码可以很好地测试数字是否为质数,但我不知道为什么)

return false (或任何return语句)之后,该方法将不执行任何其他操作而return true ,因此在这种情况下不会达到return true ,因此您的代码可以正常工作。

为什么要从零开始迭代?

考虑当i = 1时会发生什么:

if(x % i == 0)    // i = 1, so x % i will be zero
    return false;

甚至更多,考虑当i = 0时会发生什么:

if(x % i == 0)    // how would you define x % 0!?

从2开始迭代:

// ...
for(int i = 2; i <= x / 2; i++) {
    if(x % i == 0)
        return false;
}
return true;
// ...

return语句使方法退出,因此,如果执行“ return false”,则将永远不会执行返回false和return true的方法退出。

return false结束方法。 当我们说return ,这意味着“停止您正在做的事情,并将此值返回给调用我们的方法”。

没有发生这种情况

  • try - finally块,在try块的finally块中引发的任何return语句或异常都将覆盖返回的值。
  • System.exit ,此方法从不返回,因此exit调用后的任何语句都不会执行。

if(x%i==0) return false;

如果此条件为真,则它将返回false,之后将不执行任何操作

当上述条件为假时,它将返回true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM