Sieb von Eratosthenes

In der Mathematik ist das Sieb von Eratosthenes , eines mehrerer Primzahl-Siebe, ein einfacher, alter Algorithmus, um alle Primzahlen bis zu jeder vorgeschriebenen Grenze zu finden. Es tut so durch die wiederholende Markierung als Zusammensetzung (d. h. nicht erst) der Vielfachen jeder Blüte, das Starten mit den Vielfachen 2.

Die Vielfachen einer gegebenen Blüte werden erzeugt, von dieser Blüte als eine Folge von Zahlen mit demselben Unterschied anfangend, der dieser Blüte zwischen Konsekutivzahlen gleich ist. Das ist die Schlüsselunterscheidung des Siebs davon, Probe-Abteilung zu verwenden, um jede Kandidat-Zahl für die Teilbarkeit durch jede Blüte folgend zu prüfen.

Das Sieb von Eratosthenes ist eine der effizientesten Weisen, die ganze kleinere Blüte (unter ungefähr 10 Millionen) zu finden. Es wird nach Eratosthenes von Cyrene, einem alten griechischen Mathematiker genannt; obwohl keine seiner Arbeiten überlebt hat, wurde das Sieb beschrieben und Eratosthenes in der Einführung in die Arithmetik von Nicomachus zugeschrieben.

Algorithmus-Beschreibung

Eine Primzahl ist eine natürliche Zahl, die genau zwei verschiedene Teiler der natürlichen Zahl hat: 1 und es.

Alle Primzahlen weniger zu finden, als oder gleich einer gegebenen ganzen Zahl n durch die Methode von Eratosthenes:

  1. Schaffen Sie eine Liste von aufeinander folgenden ganzen Zahlen von 2 bis n: (2, 3, 4..., n).
  2. Lassen Sie am Anfang p gleiche 2, die erste Primzahl.
Wenn Sie
  1. von p anfangen, zählen Sie in der Zunahme von p zusammen und kennzeichnen Sie jede dieser Zahlen, die größer sind als p selbst in der Liste. Diese Zahlen werden 2 Punkte, 3 Punkte, 4 Punkte usw. sein; bemerken Sie, dass einige von ihnen bereits gekennzeichnet worden sein können.
  2. Finden Sie die erste Zahl größer als p in der Liste, die nicht gekennzeichnet wird. Wenn es keine solche Zahl gab, anhalten. Lassen Sie sonst p jetzt dieser Zahl gleichkommen (der die folgende Blüte ist), und die Wiederholung vom Schritt 3.

Wenn der Algorithmus endet, sind alle Zahlen in der Liste, die nicht gekennzeichnet werden, erst.

Als eine Verbesserung ist es genügend, die Zahlen im Schritt 3 zu kennzeichnen, der von p anfängt, wie alle kleineren Vielfachen von p bereits an diesem Punkt gekennzeichnet worden sein werden. Das bedeutet, dass dem Algorithmus erlaubt wird, im Schritt 4 zu enden, wenn p größer ist als n.

Eine andere Verbesserung soll ungerade Zahlen nur, (3, 5..., n) am Anfang verzeichnen, und das Verwenden einer Zunahme von 2 Punkten im Schritt 3 zusammenzählen, so nur sonderbare Vielfachen von p kennzeichnend, der größer ist als p selbst. Das erscheint wirklich im ursprünglichen Algorithmus. Das kann mit dem Rad factorization verallgemeinert werden, die anfängliche Liste nur von Zahlen coprime mit der ersten paar Blüte und nicht nur von der Verschiedenheit, d. h. Zahlen coprime mit 2 bildend.

Zusätzliches Sieb

Eine zusätzliche Formulierung des Siebs erzeugt Blüte unbestimmt (d. h. ohne einen oberen gebunden) durch das Durchschießen der Generation der Blüte mit der Generation ihrer Vielfachen (so dass Blüte in Lücken zwischen den Vielfachen gefunden werden kann), wo die Vielfachen jedes ersten p direkt, durch das Zusammenzählen vom Quadrat der Blüte in der Zunahme von p (oder 2 Punkte für die sonderbare Blüte) erzeugt werden.

Probe-Abteilung

Probe-Abteilung kann verwendet werden, um Blüte durch das Herausfiltern der gefundenen Zusammensetzungen durch die Prüfung jeder Kandidat-Zahl für die Teilbarkeit durch seine vorhergehende Blüte zu erzeugen. Es ist häufig mit dem Sieb von Eratosthenes verwirrt, obwohl der Letztere direkt die Zusammensetzungen erzeugt, anstatt für sie zu prüfen. Probe-Abteilung hat schlechtere theoretische Kompliziertheit als dieses des Siebs von Eratosthenes im Erzeugen von Reihen der Blüte.

Wenn

er jede Kandidat-Zahl prüft, verwendet der optimale Probe-Abteilungsalgorithmus gerade jene Primzahlen, die nicht seine Quadratwurzel überschreiten. Weit bekannter 1975 wird der funktionelle Code von David Turner häufig als ein Beispiel des Siebs von Eratosthenes präsentiert, aber ist wirklich ein suboptimaler Probe-Abteilungsalgorithmus.

Beispiel

Um alle Primzahlen weniger zu finden, als oder gleich 30, gehen Sie wie folgt weiter.

Erzeugen Sie zuerst eine Liste von ganzen Zahlen von 2 bis 30:

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Die erste Zahl in der Liste ist 2; streichen Sie jede 2. Zahl in der Liste danach aus (indem Sie in der Zunahme 2 zusammenzählen), d. h. alle Vielfachen 2:

2 3 5 7 9 11 13 15 17 19 21 23 25 27 29

Die folgende Zahl in der Liste danach 2 ist 3; streichen Sie jede 3. Zahl in der Liste danach aus (indem Sie in der Zunahme 3 zusammenzählen), d. h. alle Vielfachen 3:

2 3 5 7 11 13 17 19 23 25 29

Folgende Zahl, die noch nicht in der Liste danach 3 ausgestrichen ist, ist 5; streichen Sie jede 5. Zahl in der Liste danach aus (indem Sie in der Zunahme 5 zusammenzählen), d. h. alle Vielfachen 5:

2 3 5 7 11 13 17 19 23 29

Folgende Zahl, die noch nicht in der Liste danach 5 ausgestrichen ist, ist 7; der nächste Schritt würde jede 7. Zahl in der Liste danach ausstreichen sollen, aber sie werden alle bereits an diesem Punkt ausgestrichen, weil diese Zahlen (14, 21, 28) auch Vielfachen der kleineren Blüte sind, weil 7*7 größer ist als 30. Die Zahlen verlassen nicht ausgestrichen in der Liste an diesem Punkt sind alle Primzahlen unten 30:

2 3 5 7 11 13 17 19 23 29

Algorithmus-Kompliziertheit

Die Zeitkompliziertheit im zufälligen Zugriffsmaschinenmodell ist Operationen, eine direkte Folge der Tatsache, dass sich die harmonische Hauptreihe asymptotisch nähert.

Die Bit-Kompliziertheit des Algorithmus ist Bit-Operationen mit einer Speichervoraussetzung dessen.

Die segmentierte Version des Siebs von Eratosthenes, mit grundlegenden Optimierungen, verwendet Operationen und Bit des Gedächtnisses.

Durchführung

Im Pseudocode:

Eingang: eine ganze Zahl n> 1

Lassen Sie A eine Reihe von Werten von Boolean sein, die durch ganze Zahlen 2 zu n, mit einem Inhaltsverzeichnis versehen sind

am Anfang der ganze Satz zum wahren.

weil ich = 2, 3, 4..., während ich  n:

wenn [ich] wahr ist:

für j = 2i, 3i, 4i..., während j  n:

[J]: = falscher

Jetzt alles bin ich solch, dass [ich] wahr ist, erst.

Große Reihen können völlig im Gedächtnis nicht passen. In diesen Fällen ist es notwendig, ein segmentiertes Sieb zu verwenden, wo nur Teile der Reihe auf einmal gesiebt werden. Für so große Reihen, dass die siebende Blüte im Gedächtnis nicht gehalten werden konnte, werden raumeffiziente Siebe wie das von Sorenson stattdessen verwendet.

Arithmetische Fortschritte

Das Sieb kann verwendet werden, um Blüte in arithmetischen Fortschritten zu finden.

Das Sieb von Euler

Der Beweis von Euler der zeta Produktformel enthält eine Version des Siebs von Eratosthenes, in dem jede zerlegbare Zahl genau einmal beseitigt wird. Es fängt auch mit einer Liste von Zahlen von 2 bis n in der Ordnung an. Auf jedem Schritt wird das erste Element als die folgende Blüte identifiziert, und die Ergebnisse, diese Blüte mit jedem Element der Liste zu multiplizieren, werden in der Liste für das nachfolgende Auswischen gekennzeichnet. Das anfängliche Element und die gekennzeichneten Elemente werden dann von der Arbeitsfolge entfernt, und der Prozess wird wiederholt:

[2] (3) 5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53 55 59 61 65 67 71 73 77 79...

[3] (5) 7 11 13 17 19 23 29 31 37 41 43 47 49 53 59 61 67 71 73 77 79...

[4] (7) 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79...

[5] (11) 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79...

[...]

Hier wird das Beispiel gezeigt, von der Verschiedenheit nach dem ersten Schritt des Algorithmus anfangend. So auf dem Kth-Schritt werden alle restlichen Vielfachen der kth Blüte von der Liste entfernt, die danach nur Zahlen coprime mit der ersten k Blüte enthalten wird (vgl Rad factorization), so dass die Liste mit der folgenden Blüte anfangen wird, und alle Zahlen darin unter dem Quadrat seines ersten Elements auch erst sein werden.

So, wenn sie eine begrenzte Folge der Blüte erzeugen, wenn die folgende identifizierte Blüte die Quadratwurzel der oberen Grenze überschreitet, sind alle restlichen Zahlen in der Liste erst. Im darüber angeführten Beispiel wird beim Identifizieren 11 als als nächstes erst erreicht, eine Liste der ganzen Blüte weniger gebend, als oder gleich 80.

Bemerken Sie, dass Zahlen, die durch einen Schritt verworfen werden, noch verwendet werden, während man die Vielfachen kennzeichnet, z.B für die Vielfachen 3 ist es.......

Siehe auch

  • Sieb-Theorie
  • Sieb von Atkin
  • Sieb von Sundaram

Links

C#

Die kühle Welt (Film) / Die Tschechoslowakei 1968
Impressum & Datenschutz