2014-04-20 4 views
-1

프로젝트 오일러에서 프라임 문제 3을 해결했습니다. 나는 자바로 코딩했지만 죽은 코드에 대한 오류가 발생했습니다. 코드는 다음과 같습니다.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(int i = 2; i <= (int) Math.sqrt(n) ; i++) 
    { 
     if (n % i == 0) 
     { 
      return 0; 
     } 
    } 

그 이유는. 그 이유는 if (n % i != 0)이고 1을 반환하고 for 루프가 종료되기 때문입니다. 루프가 전체 시퀀스를 반복하여 1을 반환 할 때까지 기다릴 것입니다.

i++ 아래에서 경고를받는 이유는 위에서 설명한 것처럼 루프가 한 번만 반복되기 때문입니다. 절대로 i 증가시키지 마십시오.

PS :. 방법 내에서 반환하는이 글은 어떤 루프를 중단합니다

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; 
    } 
}