【发布时间】:2013-08-31 23:52:00
【问题描述】:
我试图找到数百万以下的质数之和。当我试图找到低于十万的素数总和时,我的代码有效,但是当我去大数字时它不起作用。所以我需要一些帮助来完成这项工作......
import java.util.Scanner;
public class sumPrime {
public static void main (String args []){
long n = 2000000; int i; int j;int sum =0;
for (i=2; i <n; i++){
for (j=2; j<i; j++){
if (i%j==0){
break;
}
}
if (i==j){
sum +=i;
}
}
System.out.print(sum);
}
}
【问题讨论】:
-
我会使用 long 作为总和。最多 200 万个素数的总和可能超过 2^31 - 1。
-
@azzurroverde 可能 OP 认为等待程序完成的时间过长意味着程序无法按预期工作
-
这是 Project Euler #10。
-
我们已经在 Project Euler 上发生了 10 多次这种溢出。由于您无法从所使用的编程语言的细节中抽象出来,这里是 Java 中的一种:stackoverflow.com/questions/3045482/…