2014-04-20 35 views
-1

我解決了項目Euler中關於Prime的問題3。我在java中編碼,但我得到關於死代碼的錯誤。 這裏是代碼:Java中的死碼

public class Prime { 
public int isPrime(int n){ 
    if (n==2) 
     return 1; 
    else 
    { 
     for(int i = 2; i <= (int) Math.sqrt(n) ; i++) 
     { 
      if (n % i == 0) 
      { 
       return 0; 
      } 
      else return 1; 
     } 
    } 
    return 1; 
} 

誰告訴我爲什麼原因是?謝謝!

+0

你多少次迭代將在你的循環呢?你會增加'我'嗎? –

+0

什麼行是死代碼警告? – tambykojak

+0

i ++。這裏是死代碼 – user3519507

回答

1

您的for循環內有問題。爲了解決這個問題,你應該for循環更改爲以下內容:

for(int i = 2; i <= (int) Math.sqrt(n) ; i++) 
    { 
     if (n % i == 0) 
     { 
      return 0; 
     } 
    } 

這樣做的原因是因爲你已經構建了這樣你的for循環,只會經歷一次,只有一次。這是因爲if (n % i != 0)然後你返回1和for循環終止。你想要做的是等待循環遍歷整個序列,然後返回1.

你在i++下得到警告的原因是,如上所述,因爲循環只迭代一次,它會永遠不會增加i

PS:在方法內部返回時,將打破任何環是在

1

你永遠也達不到,直到結束返回1;

循環將返回在第一次迭代

這是簡單和工作

class Prime { 
    public int isPrime(int n) { 
     for (int i = 2; i <= (int) Math.sqrt(n); i++) { 
      if (n % i == 0) { 
       return 0; 
      } 
     } 
     return 1; 
    } 
}