IsPrime方法有死代码,不返回int [关闭]

问题描述 投票:1回答:4

我想创建一个java方法来检查用户输入的int数是否为素数。但是,我得到“死代码”和“此方法必须返回int类型的结果”。有帮助吗?

  public static int isPrime(int first)
  {

    for (int i = first - 1; i > 1; i--)

      if (first%i == 0){
      int prime = 1;
      return prime;
    }

    else{
      int notPrime = 0;
      return notPrime;
    }

  }
java
4个回答
0
投票

如果他们拥有的唯一除数是1和它本身,则数字是素数。平凡的是,我们可以检查从1到自身的每个整数(不包括)并测试它是否均匀分配。

例如,可能有人试图运行此算法:

//checks whether an int is prime or not.
 boolean isPrime(int n) {
     for(int i=2;i<n;i++) {
         if(n%i==0)
             return false;
     }
     return true; 
}

2
投票

复制并将其粘贴到编辑器中后,很明显i--是导致死代码警告出现的部分。这样做的原因是因为你的for循环将在其第一次迭代中返回,并且代码i--的部分将永远不会被执行(死代码)。

除此之外,在其他答案和评论中提到的代码中还有其他一些问题。


0
投票

将return语句移到for循环之外。

由于你在if和else中循环返回,你的循环只会运行一次。

编辑:您还必须以不同方式跟踪素数。

public static int isPrime(int first)
  {

    for (int i = first - 1; i > 1; i--) {

       if (first%i == 0){
          return 1;
        }
    }


    return 0;


}

很抱歉在手机上格式化我


-1
投票
 int isPrime(int n) {
   for(int i=2;i<n;i++) {
       if(n%i==0)
          return 1;
      }
     return 0;  
   }

如果素数为0则程序返回1

© www.soinside.com 2019 - 2024. All rights reserved.