Heim > Backend-Entwicklung > Python-Tutorial > Wie können wir den Sieve of Eratosthenes-Algorithmus in Python für eine schnellere Primzahlengenerierung optimieren?

Wie können wir den Sieve of Eratosthenes-Algorithmus in Python für eine schnellere Primzahlengenerierung optimieren?

Mary-Kate Olsen
Freigeben: 2024-12-04 08:49:12
Original
477 Leute haben es durchsucht

How Can We Optimize the Sieve of Eratosthenes Algorithm in Python for Faster Prime Number Generation?

Sieb des Eratosthenes – Primzahlen in Python finden

Problem:

Beim Versuch der Implementierung Beim Sieve of Eratosthenes-Algorithmus in Python stoßen Benutzer häufig auf langsame Ausführungszeiten, insbesondere bei der Suche nach Primzahlen über 1 Millionen.

Lösung:

Die gegebene Implementierung weist mehrere Bereiche mit Verbesserungspotenzial auf:

1. Nicht optimierter Algorithmus:

  • Die anfängliche Implementierung, primes_sieve, verwaltet eine Liste von Primzahlen, was zu einer ineffizienten Elemententfernung führt.
  • primes_sieve1 verwendet ein Wörterbuch für Primalitätsflags, aber es fehlt die richtige Iteration und redundante Faktormarkierung.

2. Ineffizienz der Listenmanipulation:

  • Das Entfernen eines Elements aus einer Python-Liste ist ein teurer Vorgang, da nachfolgende Elemente verschoben werden müssen.

Optimierte Implementierung :

Um diese Probleme zu beheben, sollten Sie Folgendes optimieren Implementierung:

def primes_sieve2(limit):
    a = [True] * limit
    a[0] = a[1] = False

    for (i, isprime) in enumerate(a):
        if isprime:
            yield i
            for n in range(i*i, limit, i):     # Mark factors non-prime
                a[n] = False
Nach dem Login kopieren

Wichtige Verbesserungen:

  • Verwendet eine Liste direkt für Primalitätsflags und vermeidet so kostspielige Größenänderungen der Liste.
  • Verzögerte Generierung Primzahlen auf Abruf, sodass keine vollständige Liste gespeichert werden muss.
  • Markiert Faktoren effizient Nicht-Primzahl, indem man beim Quadrat der Primzahl beginnt.

Das obige ist der detaillierte Inhalt vonWie können wir den Sieve of Eratosthenes-Algorithmus in Python für eine schnellere Primzahlengenerierung optimieren?. 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