小于等于 '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)' 素数和。
如果我们想超越它,我们可以在代码中增加它..
**_这段代码是正确的,但未能通过更大的输入测试用例
下面的素数和不正确?怎么了?
下面的素数和不正确?
前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)' 素数和。 如果我们想超越它,我们可以在代码中增加它..