2017-02-26 4 views
-2

**このコードは正しいですが、大きな入力テストケースがありません'n'以下の素数の和が正しくない?どうしましたか?

下の素数の合計が正しくありませんか?どうしましたか?

以下の素数の和は正しくありませんか?最初のn個の正方形の

合計は、最初のNを合計

をプライムここで[クローズド]

は私が戦っているコードである素数、私を助けてください。

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

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、ハッカーの問題の1つと人々がプログラミングの最中に楽しくなるように解決しているので、この問題に進む前にループと変数を制御することを学ぶのが簡単な問題でまずいと思います。私がここであなたに与えることができるヒントは、ソリューションの時間複雑さを見いだし、それがタイムラインに合っているかどうかを考えてみることです。 –

答えて

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

私は

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

を入れて、3682913を持って! 最初の1000個の素数の合計が正しいです。 印刷ループを確認してください!

+0

ありがとう@ボブジャン、私は表示されます。 –

関連する問題