Heim > Backend-Entwicklung > C++ > Was ist der eleganteste Weg, Primzahlen in C# oder Java zu generieren?

Was ist der eleganteste Weg, Primzahlen in C# oder Java zu generieren?

Mary-Kate Olsen
Freigeben: 2025-01-13 10:43:43
Original
434 Leute haben es durchsucht

What's the Most Elegant Way to Generate Prime Numbers in C# or Java?

Auf der Suche nach Eleganz: Best Practices für die Primzahlengenerierung in C# oder Java

Die Erzeugung von Primzahlen war schon immer ein Thema, mit dem sich Programmierer schon lange beschäftigt haben. Wie man ein Gleichgewicht zwischen Geschwindigkeit und Klarheit des Codes findet, ist zum Schlüssel für das Design von Algorithmen geworden. In diesem Artikel werden elegante Möglichkeiten zum Generieren von Primzahlen in C# oder Java untersucht.

Verbessertes Sieb von Eratosthenes

Das Sieb des Eratosthenes ist eine der gebräuchlichsten Methoden zum Finden von Primzahlen. Durch iteratives Entfernen von Vielfachen jeder Primzahl können wir alle Nicht-Primzahlen herausfiltern. Der folgende Code ist eine Verbesserung des Standard-Sieb-Algorithmus:

<code class="language-c#">public static List<int> GeneratePrimes(int limit)
{
    if (limit < 2) return new List<int>();

    var primes = new bool[limit + 1];

    for (int i = 2; i * i <= limit; i++)
    {
        if (!primes[i])
        {
            for (int j = i * i; j <= limit; j += i)
            {
                primes[j] = true;
            }
        }
    }

    var result = new List<int>();
    for (int i = 2; i <= limit; i++)
    {
        if (!primes[i])
        {
            result.Add(i);
        }
    }
    return result;
}</code>
Nach dem Login kopieren

Primzahlgenerierung basierend auf LINQ

Ein anderer Ansatz besteht darin, die Lazy-Evaluation-Funktion von LINQ zu nutzen. Dieser Code gibt eine unendliche Folge von Primzahlen zurück:

<code class="language-c#">public static IEnumerable<int> GeneratePrimesLINQ()
{
    yield return 2;
    yield return 3;

    var primes = new HashSet<int> { 2, 3 };

    for (int i = 5; ; i += 2)
    {
        if (!primes.Any(p => i % p == 0))
        {
            primes.Add(i);
            yield return i;
        }
    }
}</code>
Nach dem Login kopieren

Methodenauswahl

Welche Methode Sie wählen, hängt vom jeweiligen Anwendungsszenario ab. Das modifizierte Sieb des Eratosthenes ist effizient bei der Suche nach einer festen Anzahl von Primzahlen, während die LINQ-basierte Methode eine Lazy-Infinite-Sequenz bereitstellt, die für die inkrementelle Verarbeitung geeignet ist. Letztlich ist die eleganteste Lösung diejenige, die einen konkreten Bedarf klar und effizient erfüllt.

Das obige ist der detaillierte Inhalt vonWas ist der eleganteste Weg, Primzahlen in C# oder Java zu generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage