【发布时间】:2016-02-05 20:03:39
【问题描述】:
我试图找到素数的总和。为了在更短的时间内执行,我在一个长数组中预先计算了它,但最后两个测试用例出现错误。原因是溢出,即 Integer.MAX_VALUE 中可以容纳的最大值,但我试图提供一个较大的值。我需要这么大的价值:
测试链接:https://www.hackerrank.com/contests/projecteuler/challenges/euler010/
这是我的代码:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner sc = new Scanner(System.in);
int count,n,t;
long ans[] = new long[10000001];
ans[0] = 0; ans[1] = 1; ans[2] = 2; ans[3] = 5; ans[4] = 5;
// ans[2] = 5;
for(int m=5;m<100000;){
count = 0;
if(m%2==0){
count++;
}
// for(int i=3;i<=1000000;i++){
for(int j=3;j*j<=m;j+=2){
if(m%j==0){
// System.out.println(i);
count++;
}
}
if(count<1){
ans[m]=ans[m-1]+m;
// System.out.println(m+" : "+ans[m]);
m++;
}
else{
ans[m]=ans[m-1];
// System.out.println(m+" : "+ans[m]);
m++;
}
// }
}
t = sc.nextInt();
while(t>0){
n = sc.nextInt();
System.out.println(ans[n]);
t--;
}
}
}
【问题讨论】:
-
您提供的链接损坏
-
BigInteger 类用于大整数。
-
我刚刚检查了链接是否正常工作:hackerrank.com/contests/projecteuler/challenges/euler010
-
哪个号码溢出了?
-
这部分:long ans[] = new long[10000001];当我预计算素数时,此数组中的值溢出
标签: java arrays integer long-integer