www.Kiebart.de 

Startseite Impressum Kontakt  

Auf dem Weg zur Weltformel...
Das Kontraxiom

Das Kontraxiom
Primzahlen

Zusammenfassung: Nachdem ich bei einem firmeninternen Programmierwettbewerb zum möglichst schnellen Auffinden und Anzeigen der Primzahlen bis 100.000.000 mit Abstand gewonnen hatte und in kürzester Zeit ein Verfahren - ich taufte es "Kiebart-Kamm" - fand, welches sich in der Geschwindigkeit gegenüber dem Sieb des Eratosthenes auszeichnete, beschäftigten mich die Primzahlen weiterhin. 

Im Internet fand ich eine Organisation www.mersenne.org, die auf der ganzen Welt Computerkapazität suchte, um weitere Mersenneprimzahlen zu finden. Da die besonders großen Exemplare für Verschlüsselungsmechanismen wertvoll sind, sind hier auch Preise von über 100 Tausend Dollar Finderlohn ausgesetzt. So sind Tausende von Computern auch jetzt, wenn Sie diesen Text lesen, damit beschäftigt, neue Mersenneprimzahlen zu finden.

Zusammen mit Herrn Willi Jeschke www.primini.de habe ich mich in die Welt der Primzahlen begeben. Wir fanden neue Eigenschaften der Primzahlen und arbeiteten uns in immer tiefer gelegene Sphären der Mathematik ein.

So entstand die Software "Magie der Primzahlen", die kostenlos im Internet www.euroware.de herunter geladen werden kann.

Ich beschreibe an dieser Stelle einige Algorithmen, die in dieser Software verwirklicht wurden.

8 von 30

Bei der Speicherung und der Bearbeitung werden nur die Zahlen betrachtet, die nicht durch die Faktoren 2, 3 und 5 teilbar sind. Betrachten wir die Zahlen bis 30 (=2*3*5), so werden nur 8 Zahlen als mögliche Primzahlen erkannt. Es sind dies:

1, 7, 11, 13, 17, 19, 23, 29

Wenn man auf diese 8 Zahlen 30 addiert, erhält man:

31, 37, 41, 43, 47, 49, 53, 59 und wenn man weitere 30er-Vielfache addiert, sieht man

61, 67, 71, 73, 77, 79, 83, 89
91, 97, 101, 103, 107, 109, 113, 119
121, 127, 131, 133, 137, 139, 143, 149 usw.

Wenn man diese Zahlenfolge fortsetzt, beinhaltet diese alle möglichen Primzahlen bis auf die ersten drei (2, 3, 5). Einige dieser Zahlen müssen allerdings noch gestrichen werden, da sie zusammengesetzt sind.

Zur Speicherung der Primzahlen nutzt man einfacherweise ein Byte (=8 Bit) zur Darstellung eines 30er Zahlenbereichs. Jedes Bit entspricht damit einer einzelnen Zahl aus dem eben beschriebenen Muster.

Nummeriert man die einzelnen Bytes beginnend mit 0, so errechnet sich die Bedeutung eines einzelnen Bits durch:

Bytenummer * 30 + {1; 7; 11; 13; 17; 19; 23; 29}   

Die Primzahlen bis 100 Millionen lassen sich so durch ca. 3,3 MB Speicher darstellen.

Der Kiebart-Kamm

Der Kiebartkamm beschreibt ein Verfahren, in dem jede Nichtprimzahl innerhalb der Bitspeicherung genau einmal markiert wird.

Zuerst wird die 1 als Nichtprimzahl markiert. Von nun an gelten alle Bits als "Nochprimzahlen". Die erste Nochprimzahl wird mit der zweiten Nochprimzahl multipliziert und das Produkt (im entsprechenden Bit) als Nichtprim markiert. 7*11 = 77

Mit der 7 werden nun alle Produkte mit Nochprimzahlen gebildet und als zusammengesetzt (Nichtprim) markiert.
7*13=91
7*17=119
7*19=133
usw. bis zur berechnenden Grenze

Wir fahren fort mit der nächsten Nochprimzahl (11) als Basis für die Produktbildung und streichen
11*13
11*17
11*19
11*23
usw.

Wir setzen das Verfahren fort mit der Basis 13, 17, 19 usw. solange, bis die erste Produktbildung einen Wert über die zu bildende Grenze ergibt. (alternativ solange, wie Basis <= Wurzel aus Grenze)

Wenn wir uns jetzt die verbleibenden Zahlen anschauen, sind dort nur noch Primzahlen + Quadratzahlen! enthalten.

Um weiterhin jedes Bit nur einmal zu markieren, wird die Wurzel aus der Grenze berechnet und ab dieser Stelle der Bitspeicher rückwärts bearbeitet. Zu jeder Nochprimzahl wird das Quadrat gebildet und gestrichen.

Ein Zählen der Primzahlen innerhalb der vorgegebenen Grenze wird auf folgendem einfachen Weg möglich:

Summe aller Bits - Markierte Nichtprims + 3 (für die Primzahlen 2, 3, 5) 
Während dem Markieren von Nichtprims ist es also ratsam, diese zu zählen.

Mersenneprimzahlen, Mersennezahlen

siehe eigene Seite hier klicken