おはようございます。私はちょうどJAVAの最初のコースを完了し、夏の新鮮なものを保つためにオンラインプロジェクトを探していました。私はプロジェクトのオイラーのウェブサイトを見つけて、問題10を完成させようとしています。私は素数の配列を作るためにこのアルゴリズムを書いていました。しかし、numberOfPrimes = 100000以上で実行しようとすると数分かかります。初心者のための素数配列を構築するより効率的な方法
私はそれを理解するスキルがないかもしれませんが、私はより効率的な方法があると仮定しています。いずれにせよアドバイスをいただければ幸いです。
int[] arrayOfPrimes = new int[numberOfPrimes];
arrayOfPrimes[0] = 2;
for(int i = 1; i < numberOfPrimes; i++)
{
int n = arrayOfPrimes[(i - 1)] + 1;
for(int j = 0; j < i; j++)
{
if(n % arrayOfPrimes[j] == 0)
{
n++;
j = -1; //resets to 0 at the next iteration.
}
}
arrayOfPrimes[i] = n;
}
jはI/2 –
で停止することができます前に、申し訳ありませんが、オイラーの哲学は「あなたはそれを解決できない場合、あなたはそれを解決することはできません」で一番上に
import java.util.ArrayList;
を挿入することを忘れないでください。 。あなた自身でそれを読んでください。 –恐らくSag of Eratosthenes(https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes)やSieve of Atkin(https://en.wikipedia.org/wiki/Sieve_of_Atkin)のようなものがあなたのアプローチを再考するのに役立ちます。 – cegas