2012-06-13 3 views
0

현재 구형 온라인 판사 (http://www.spoj.pl/problems/PRIME1/)에서 Prime Generator 문제를 해결하려고합니다.BufferedReader는 사용자가 다음 행을 읽도록 기다리고 있습니다.

핵심 문제는 이미 해결되었습니다. 제가 직면 한 문제는 입력을 읽을 때 첫 번째 2 줄을 읽고 3 번째 줄을 읽는 것입니다.이 작은 것이 나에게주고 있습니다. 솔루션 평가시 시간 초과. 주위에 어딘가에 있는지 알고 싶습니다 그래서 내가 입력을 누르지 않고 전체 입력을 읽습니다.

2 
1 10 
3 5 

출력 :

2 
3 
5 
7 

3 
5 

여기 내 코드의

class Solucion_Prime_Generator { 

    public static void main(String[] args) throws NumberFormatException, 
      IOException { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
     int t = Integer.parseInt(reader.readLine()); 
     for(int i=0;i<t;i++) 
     { 
      String numbers = reader.readLine();    
      System.out.println(numbers); 
      String[] numberArray = numbers.split(" "); 
      for (int j = Integer.parseInt(numberArray[0]); j <= Integer.parseInt(numberArray[1]); j++) 
      { 
       if(isPrime(j)){ 

        System.out.println(j); 
       } 
      } 
      System.out.println(" "); 
     } 
    } 

    public static boolean isPrime(int n) 
    { 

     if(n==1) 
     { 
      System.out.println(); 
      return false; 
     } 
     if(n==2) 
     { 
      return true; 
     } 
     if(n%2==0){ 
      return false; 
     } 
      for (int i = 3; i*i <= n; i+=2) 
      { 

      if(n%i==0) 
      {    
       return false; 
      } 

     } 

     return true; 
    } 

} 
+0

답변에 표시된대로 정확하게 어떤 문제인지는 분명하지 않습니다. –

+0

코드를 실행하는 데 시간이 걸렸으므로 괜찮습니다. 당신이 찾고있는 정확한 행동은 무엇입니까? –

답변

0

라인 입력 누르지 때까지

여기

가 입력 입력과 출력의 . 당신이 어떻게 타이핑을했는지 어떻게 알 수 있습니까?

+0

는 내 해결책과 같지만 시간의 측면에서 볼 때 효과적이지 않습니다. 에라토스테네스 체 (Sieve of Eratosthenes)를 사용해이 문제를 해결해야한다고 생각합니다. 시간 낭비에 사과드립니다. – oskar132

0

정확히 무엇을하려고하는지 알기는 어렵지만, readLine() 메서드는 캐리지 리턴이나 줄 바꿈 또는 둘 모두로 종료되어야합니다.

이를 참조하십시오

http://docs.oracle.com/javase/1.3/docs/api/java/io/BufferedReader.html#readLine()

+0

는 내 해결책과 같지만 시간의 측면에서 볼 때 효과적이지는 않습니다. 에라토스테네스 체를 사용하여이 문제를 해결해야한다고 생각합니다. 시간 낭비에 사과드립니다. – oskar132

+0

도와 드리겠습니다. – rlinden

0

나는 그것이 문제가 파일의 마지막 줄에 발생하지 않습니다 생각? 이 경우 마지막 줄은 세 번째 줄입니다. 아마도 캐리지 리턴/줄 바꿈없이 파일의 마지막 줄이었을 것입니다.

tjg84가 지적했듯이, readLine()은 행이 캐리지 리턴 또는 라인 피드 또는 둘 모두로 끝나기를 기대합니다. 따라서 가능한 솔루션은 두 가지가 있습니다. - 마지막 행의 끝에 캐리지 리턴/줄 바꿈을 삽입하십시오. - 다른 방법을 사용하여 행을 읽습니다. 아마도 스캐너 클래스 method nextLine()을 사용할 수 있습니다.

+0

은 내 해결책과 같지만 시간의 측면에서 볼 때 효과적이지 않습니다. 에라토스테네스 체를 사용하여이 문제를 해결해야합니다. 시간 낭비에 사과드립니다. – oskar132

관련 문제