2013-08-08 4 views
2

저는 프로젝트 오일러 # 7에서 일해 왔으며 제 프로그램이 작동하지 않는 이유를 알 수 없습니다.프로젝트 오일러 # 7 Java 코드가 작동하지 않습니다.

처음 여섯 개 소수에 의한 리스팅 : 다음과 같은 문제는 2, 3, 5, 7, 11, 13, 우리는 6 총리가 10 001번째 무엇입니까 (13)

것을 볼 수 있습니다 소수?

public class Euler7 { 
public static void main (String[] args) { 
    long count = 1; 
    long primes = 0; 
    while (primes <= 10001) { 
     if (isPrime(count)){ 
      primes++; 
      if (primes == 10001) { 
       System.out.println(count); 
      } 
     } 

    count++; 
    } 
} 
public static boolean isPrime (long i) { 
    if (i <= 1) return false; 
    else if (i == 2 || i == 3) return true; 
    else if (i % 2 == 0 || i % 3 == 0) return false; 
    else { 
    for (int n = 3; n < Math.sqrt(i); n+=2) { 
     if (i % n == 0) { 
      return false; 
     } 
    } 
    return true; 
    } 
} 

}

편집 :

이 내 프로그램은 지금까지입니다 명확하게하기 위해서는 값 104,033을 반환하지만 울프 럼 알파는 1만1번째 총리는 104,743

+4

무엇이 문제입니까? –

답변

4

에 코드를 잘못 말한다 소수의 일부 완전한 사각형도 중요하다고 생각합니다. 특히 isPrime(25)true을 반환합니다.

수정 사항을 파악하기에 충분해야합니다 (추가로 힌트 하나만 : 하나만 추가하면됩니다).

+2

나는 그것을 얻었을 것으로 생각한다. 왜냐하면 그것은 루트에 올라 가지 않기 때문에 n <= Math.sqrt (i)를 가질 필요가있다. – earora4498

2

당신은 지금 당신의 코드를 자신의 주요으로 소수의 완벽한 사각형을 받아

for(int n = 3; n <= Math.sqrt(i); n += 2){ 

를 사용해야합니다.