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>
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>
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!