gpt4 book ai didi

java - 找出两百万以下所有素数的总和。我的程序不适用于非常大的数字

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:51 25 4
gpt4 key购买 nike

这是我求素数和的代码。它适用于一些小数,但如果它是 2000000(200 万),它永远不会结束。有人可以帮助我吗?

import java.math.BigInteger;
public class Problem010{
public static void main(String[] args) {

BigInteger sum = new BigInteger("2");

//for (int i=3; i<2000000; i++) {
for(int i=3; i<10; i++){
for (int j=2; j<i; j++){
if (i % j == 0)
break;
else if (i == j+1){
sum = sum.add(BigInteger.valueOf(i));
}
}
}
System.out.println("Sum = "+sum);
}
}

最佳答案

您的答案是 142913828922,但如何回答?

我只是稍微改变了你的算法:

public static void main(String[] args) {

BigInteger sum = new BigInteger("2");
boolean isPrime = true;
for (int i=3; i<2000000; i++) {
double aa = Math.sqrt((double)i);
for (int j=2; j<=aa; j++){
if (i % j == 0){
isPrime = false;
break;
}
}
if(isPrime){
sum = sum.add(BigInteger.valueOf(i));
}
isPrime = true;
}
System.out.println("Sum = "+sum);
}

我没有遍历从 2 到 i 的所有数字,而是从 2 到 sqrt(i),这大大提高了您的代码运行时间:)

关于java - 找出两百万以下所有素数的总和。我的程序不适用于非常大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29815592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com