我正在尝试编写一段代码来返回200万以下所有质数的总和。我有一个isPrime(int x)方法,如果数字是质数,则返回true。代码如下:
public static boolean isPrime(int x) {
for (int i = 2; i < x; i++) {
if (x % i == 0) {
return false;
}
}
return true;
}
另一种方法是我正在尝试递归实现,但只能处理到某个特定的数字,超过这个数字会导致堆栈溢出错误。目前我成功运行该代码的最高数字是10,000。
以下是代码:
public static int sumOfPrimes(int a) {
if (a < 2000000) { //this is the limit
if (isPrime(a)) {
return a + sumOfPrimes(a + 1);
} else {
return sumOfPrimes(a + 1);
}
}
return -1;
}
那么当数字变大时,为什么会出现堆栈溢出错误,我该如何处理它?此外,您通常如何处理编写针对如此庞大数字的代码?例如:像这样的普通数字操作,但针对更大的数字?我以递归方式编写了此代码,因为我认为这样会更有效率,但它仍然无法正常工作。