私は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^4で、10^5で、私はOutOfMemoryErrorを得る上で、10^3点で最大入力のために正常に動作しているようだ: は、ここでは、コードです。 コードは正常に動作しているようですが、もう少し詳しく説明します。助言がありますか?
正しいものとして、他の回答を選択する必要がありました。 :-) –
心配する必要はありません。問題を解決することだけです! – dlev
ああ、ほぼジェノのジェネリック薬の美しさ... – Blindy