测试Java中的数字是否为素数

时间:2014-08-05 16:14:40

标签: 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;
      }
   }

我的问题是:最后一个语句&#39;返回true&#39;,如果数字是素数,则没有错误返回,但如果数字不是素数,那么在for循环期间,将会有错误的回报。当循环结束时,程序执行下面的语句循环 - 'return true'。所以我想知道返回的true是否会覆盖for循环期间发生的返回false。 (虽然当我测试这段代码时,代码很适合测试一个数字是否为素数,但我不知道为什么)

5 个答案:

答案 0 :(得分:5)

return false(或任何return语句)之后,该方法将返回而不执行任何其他操作,因此在这种情况下无法访问return true,因此您的代码可以正常工作。 / p>

答案 1 :(得分:1)

为什么要在零开始迭代?

考虑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;
// ...

答案 2 :(得分:0)

return语句使方法退出,所以如果&#34;返回false&#34;执行方法exit返回false并且返回true将永远不会被执行。

答案 3 :(得分:0)

return false结束方法。当我们说return时,这意味着“停止你正在做的事情并将这个值反馈给调用我们的方法。”

没有发生这种情况的案例

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

答案 4 :(得分:0)

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

如果这个条件成立,那么它将返回false并且在此之后不会执行任何操作

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