Finden nächste Primzahl-Algorithmus

Ich freue mich zu verbessern, meinen Algorithmus zu finden, der nächste primenumber das Recht auf eine bestimmte Anzahl.
Was ich habe, so weit ist diese:

int NextPrime(int a)
{
    int i, j, count, num;
    for (i = a + 1; 1; i++)
    {
        for (j = 2, count = 0; j <= i; j++)
        {
            if (i%j == 0)
            {
                count++;
            }
        }
        if (count == 1)
        {
            return i;
            break;
        }
    }
}

Tho dieser Algorithmus ist nicht effizient beim laufen oft.
Kann mir jemand Ratschläge geben, wie der Algorithmus könnte beschleunigt oder verbessert.

  • en.wikipedia.org/wiki/Sieve_of_Eratosthenes
  • Die beiden basic-speed-ups zu erhöhen j mit 2 (ab 3, nach dem Test für 2), da nur ungerade zahlen außer 2 sind prim. Darüber hinaus nur überprüfen bis zu der Quadratwurzel der Anzahl (als einer der Faktoren für eine Zahl <= die Quadrat-Wurzel.)
  • siehe auch > diese Frage
  • Verwenden break; nach count++;.
  • Ich verstehe nicht, warum Menschen downvoting jede Frage. Dieses ist einfach urkomisch. Das Sieb des Eratosthenes ist nicht der richtige Weg hier.
  • Haben Sie versuchen zu tun, einige probabilistic primality tests vor dem start der innere Zyklus? en.wikipedia.org/wiki/Primality_test

InformationsquelleAutor Dark Side | 2015-05-05
Schreibe einen Kommentar