小于等于 'n' 的素数之和不正确?怎么了?

Sum of primes below and equal to 'n' not correct? what's wrong?

**_这段代码是正确的,但未能通过更大的输入测试用例

下面的素数和不正确?怎么了?

下面的素数和不正确?

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

之前

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

我放

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

获得了3682913! 您的前 1000 个质数之和是正确的。 所以,检查你的打印循环!

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

这是正确的代码,您可以求和 'nearly 1200 (<1300)' 素数和。 如果我们想超越它,我们可以在代码中增加它..