gpt4 book ai didi

java - 提高java中Eratosthenes代码筛的效率

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:37 25 4
gpt4 key购买 nike

我已经为 Sieve of Eratosthenes 编写了代码在 Java 中,但我面临一些时间和空间效率问题。这是代码:

import java.util.*;

class EratosthenesSeive
{

public static void main(String args[])
{

ArrayList<Long> myPrimeList = new ArrayList<Long>();
ArrayList<Long> myTempPrimeList = new ArrayList<Long>();
ArrayList<Boolean> isPrimeNumber = new ArrayList<Boolean>();
int index = 0;

long ul = 1500l;
long ll = 2;

do
{
myTempPrimeList.add(ll);
isPrimeNumber.add(true);
ll++;
}while( ll != (ul+1));

for(long i : myTempPrimeList)
{
if(isPrimeNumber.get(index))
{
myPrimeList.add(i);
for(long j = i ; j*i <= ul; j++)
{
isPrimeNumber.set(myTempPrimeList.indexOf(j*i),false);
}
}
index++;
}

System.out.println(myPrimeList);
}
}

对于高达 10^3 的输入,它似乎工作正常,在 10^4 时它只是挂起,在 10^5 及以上我得到 OutOfMemoryError .代码似乎工作正常,但我想把它固定一点。有什么建议吗?

最佳答案

您在该代码中装箱/拆箱 ton。您可能想尝试更换 ArrayList<> s 为原始类型的直数组。

关于java - 提高java中Eratosthenes代码筛的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400696/

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