2017-02-26 1 views
-2

** _이 코드는 정확하지만 큰 입력 테스트 사례가 없습니다.'n'이하의 소수의 합이 올바르지 않습니까? 뭐가 문제 야?

아래 소수의 합병이 정확하지 않습니까? 뭐가 문제 야?

아래 소수의 합이 올바르지 않습니까? 처음 n 제곱의

합이 [마감] 첫 번째 N 소수 여기

내가 싸우는있어 코드를 합산

소수가, 저를 도와주세요.

import java.util.*; 
public class Solution 
{ 
public static void main(String[] args) 
{ 
    int a[] = new int[10000000]; 
    int b[] = new int[1000000]; 
    int c[] = new int[1000000]; 
    Arrays.fill(a,1); 
    Scanner in = new Scanner(System.in); 
    for(int i=2;i<10000;i++) 
     if(a[i]==1) 
      for(int j=i*i;j<10000000;j+=i) 
       a[j]=0; 
    b[0]=b[1]=0; 
    int k=2; 
    for(int i=2;i<10000000;i++) 
     if(a[i]==1) 
     { 
      b[k]=i+b[k-1]; 
      c[k]=i; 
      k++; 
     } 
    int t = in.nextInt(); 
    while(t-->0) 
    { 
     int n = in.nextInt(); 
     for(int i=2;;i++) 
     { 
      if(c[i]==n) 
      { 
       System.out.println(b[i]); 
       break; 
      } 
      else if(c[i]>n) 
      { 
       System.out.println(b[i-1]); 
       break; 
      } 
     } 
    } 
} 
} 
+1

슬라이드 연산자 사용에 대한 존중. 그러나 걷기 전에 뛰지 마십시오. – Bathsheba

+0

무엇? 나는 u를 얻을 수 없다! !! –

+0

@HariKiranVusirikala, hackerrank 문제 중 하나는 사람들이 주로 프로그래밍하는 동안 재미있게 해결하기 때문에이 문제를 해결하기 전에 루프와 변수를 제어하는 ​​방법을 익히기 위해 쉬운 문제를 먼저 시도하는 것이 좋습니다. 여기서 내가 드릴 수있는 힌트는 솔루션의 시간 복잡성을 찾아내고 이것이 시간 상상에 적합 할 수 있다고 생각하는 것입니다. –

답변

1
import java.util.*; 

public class Solution { 

    public static void main(String[] args) { 
     int a[] = new int[10000]; 
     int b[] = new int[10000]; 
     int c[] = new int[10000]; 
     Arrays.fill(a,1); 
     Scanner in = new Scanner(System.in); 
     for(int i=2;i<1000;i++) 
      if(a[i]==1) 
       for(int j=i*i;j<10000;j+=i) 
        a[j]=0; 
     b[0]=0; 
     int k=1; 
     for(int i=2;i<10000;i++) 
      if(a[i]==1) 
      { 
       b[k]=i+b[k-1]; 
       c[k]=i; 
       k++; 
      } 
     int t = in.nextInt(); 
     while(t-->0) 
     { 
      int n = in.nextInt(); 
      System.out.println(b[n]); 
     } 
    } 
} 

이 올바른 코드와 U가 '거의 1200 (< 1300)'소수의 합 개까지 합계를 할 수 있습니다. 우리가 그것을 넘어서고 싶다면 코드에서 그것을 늘릴 수 있습니다 ..

+1

하지만 1000 이하의 소수 합계를 인쇄하고 싶습니다. –

+1

하지만 U는 첫 번째 n 소수의 합을 – krishnav1

+0

실수로 미안하다고 말했습니다. –

1

int t = in.nextInt(); 
while(t-->0) 

전에 나는

System.out.println("** b[1000] = " + b[1000]) ; 

을 넣어 3,682,913있어! 처음 1000 개의 소수가 합쳐졌습니다. 인쇄 루프를 확인하십시오!

+0

감사합니다. @bobjan, 알겠습니다. –

관련 문제