


Wie kann der Sieve of Eratosthenes-Algorithmus für eine schnellere Primzahlgenerierung optimiert werden?
Das Sieb des Eratosthenes
Das Sieb des Eratosthenes ist ein alter Algorithmus, der jedoch auch heute noch als einfache und effiziente Methode verwendet wird, um alle Primzahlen unterhalb einer bestimmten Zahl zu finden . Der Algorithmus funktioniert, indem er iterativ Vielfache jeder Primzahl markiert, beginnend mit 2.
Hier ist eine Python-Implementierung des Siebes des Eratosthenes:
def sieve_of_eratosthenes(n): """Return a list of all prime numbers below n.""" # Create a list of all numbers from 2 to n. numbers = list(range(2, n + 1)) # Iterate over the numbers in the list. for i in range(2, int(n ** 0.5) + 1): # If the number is prime, mark off all its multiples. if numbers[i] != -1: for j in range(i * i, n + 1, i): numbers[j] = -1 # Return the list of prime numbers. return [i for i in numbers if i != -1]
Dieser Algorithmus ist relativ einfach zu implementieren. und es ist ziemlich effizient. Beispielsweise kann es auf einem modernen Computer alle Primzahlen unter 1 Million in etwa 0,1 Sekunden finden.
Zeitkomplexität
Die Zeitkomplexität des Siebes des Eratosthenes beträgt O(n log log n) . Das bedeutet, dass der Algorithmus O(n) Zeit benötigt, um die Liste aller Zahlen von 2 bis n zu erstellen, und dass er O(log log n) Zeit benötigt, um alle Vielfachen jeder Primzahl zu markieren.
Kann es noch schneller gemacht werden?
Es gibt einige Möglichkeiten, das Sieb des Eratosthenes gleichmäßiger zu machen schneller:
- Verwenden Sie eine effizientere Datenstruktur. Die Liste aller Zahlen von 2 bis n kann in einer effizienteren Datenstruktur, beispielsweise einem Bitvektor, gespeichert werden. Dies kann den Platzbedarf des Algorithmus reduzieren und seine Leistung verbessern.
- Verwenden Sie einen effizienteren Markierungsalgorithmus. Der Algorithmus zum Markieren aller Vielfachen jeder Primzahl kann effizienter gestaltet werden durch Verwendung eines Siebrades. Dies kann die zeitliche Komplexität des Algorithmus auf O(n) reduzieren.
- Parallelisieren Sie den Algorithmus. Der Algorithmus kann parallelisiert werden, um die Vorteile mehrerer Kerne auf einem modernen Computer zu nutzen. Dies kann die Leistung des Algorithmus weiter verbessern.
Hier ist eine Python-Implementierung einer schnelleren Version des Siebes des Eratosthenes:
import numpy as np def sieve_of_eratosthenes_fast(n): """Return a list of all prime numbers below n.""" # Create a bit vector to store the prime numbers. primes = np.ones(n // 2 + 1, dtype=np.bool) # Mark off all the multiples of 2. primes[3::2] = False # Iterate over the odd numbers from 3 to n. for i in range(3, int(n ** 0.5) + 1, 2): # If the number is prime, mark off all its multiples. if primes[i // 2]: primes[i * i // 2::i] = False # Return the list of prime numbers. return [2] + [2 * i + 1 for i in range(1, n // 2 + 1) if primes[i]]
Dieser Algorithmus ist schneller als die Originalversion des Siebs des Eratosthenes und kann auf einem modernen Computer alle Primzahlen unter 1 Million in etwa 0,01 Sekunden finden.
Das obige ist der detaillierte Inhalt vonWie kann der Sieve of Eratosthenes-Algorithmus für eine schnellere Primzahlgenerierung optimiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Fastapi ...
