Primzahlgenerator

Aus testwiki
Zur Navigation springen Zur Suche springen

Als Primzahlgenerator bezeichnet man in der Informatik einen Algorithmus f(n), so dass für natürliche Zahlen n der Wert f(n) die n-te Primzahl ist. In der Mathematik und speziell der Zahlentheorie entspricht das Formeln, die besonders viele Primzahlen liefern (Formeln für Primzahlen). Bisher wurde noch kein effizienter Primzahlgenerator gefunden, insbesondere existiert keine praktikable geschlossene Formel zur Generierung von Primzahlen.

Es gibt allerdings Formeln, bei denen eine gewisse Wahrscheinlichkeit besteht, dass eine erzeugte Zahl eine Primzahl ist, so dass die erzeugten Zahlen noch darauf getestet werden müssen, ob sie prim sind. Im Artikel werden auch andere Formeln behandelt, die nicht praxistauglich sind, die aber in der mathematischen Literatur bezüglich der Frage diskutiert wurden, ob sie viele Primzahlen liefern.

Geschichte

Einer der ältesten Algorithmen zur Bestimmung von Primzahlen ist das Sieb des Eratosthenes, bei dem nacheinander aus einer Liste der natürlichen Zahlen diejenigen Zahlen gestrichen werden, die Vielfache der jeweils kleinsten noch nicht gestrichenen Zahl sind. Dadurch bleiben die Primzahlen innerhalb der Ausgangsliste übrig.

Schon Euler gab die Formeln n2+n+17 und n2n+41 an, die für 0n<16 bzw. 0n<41 Primzahlen liefern. Auch für größere Werte von n liefern die beiden Formeln viele Primzahlen, weil das Ergebnis nie durch Primzahlen p<17 bzw. p<41 ganzzahlig teilbar ist. Allgemein gibt es viele solche Formeln an2+bn+c, wodurch sich die auffällige Ulam-Spirale erklärt. Es gibt aber nach Adrien-Marie Legendre kein Polynom, das für alle Werte der Variablen in den natürlichen Zahlen Primzahlen ergibt (auch nicht fast alle Primzahlen). Die Frage, welche ganzzahligen Polynome unendlich viele Primzahlen erzeugen, ist Gegenstand der Bunjakowski-Vermutung.

Die beliebteste ist die der Mersenne-Zahl Mn=2n1, bei der Mn eine Primzahl ist. Durch die besonderen Eigenschaften der Teiler von Mersenne-Zahlen eignen sie sich für die Suche nach möglichst großen Primzahlen.

Fermat vermutete, dass alle Zahlen der Form 22n+1 prim sind; man nennt sie Fermat-Zahlen. Tatsächlich ist aber für n>4 keine derartige Primzahl bekannt.

Auch bekannt ist eine Anwendung des Satzes von Euklid, bei der zum Primorial p# (Produkt aller Primzahlen von 2 bis p) eine 1 addiert wird:

p#+1=235p+1

p#+1 ist prim für p=2,3,5,7,11,31,379,1019,1021, (Vorlage:OEIS) Es ist unbekannt, ob es unendlich viele Primzahlen gibt, die so erzeugt werden.

Weitere Formeln

  • n!1 ist prim für n=3,4,6,7,12,14,30,32,33,38,94,166, (Vorlage:OEIS)
  • n!+1 ist prim für n=1,2,3,11,27,37,41,73,77,116,154, (Vorlage:OEIS)
  • Primzahlen der Form kgV(1,,n)+1 sind: 2,3,7,13,61,421,2521,232792561, (Vorlage:OEIS)

Nach dem Dirichletschen Primzahlsatz enthält eine arithmetische Folge am+b (wobei a, b teilerfremd sind und m die natürlichen Zahlen durchläuft) unendlich viele Primzahlen (aber auch zusammengesetzte Zahlen). Allerdings gibt es nach Ben Green und Terence Tao für jedes k arithmetische Folgen (festgelegt durch a,b), die Primzahlen für k aufeinanderfolgende Werte liefern.[1] Zum Beispiel liefert:

43142746595714191+5283234035979900k

Primzahlen für k=0,,25. Die Methode entspricht dem Fall linearer Polynome.

Trivialer Generator

Ein trivialer Primzahlgenerator kann folgendermaßen induktiv definiert werden:

  1. f(1)=2
  2. f(2)=3
  3. für n2 ist f(n+1) die auf f(n) folgende Primzahl, wobei einfach alle Zahlen ab f(n)+2 aufsteigend darauf getestet werden, ob sie eine Primzahl sind.

Dieses Verfahren ist aber recht ineffektiv, da nacheinander alle ungeraden natürlichen Zahlen getestet werden müssen. Als Alternative bietet es sich an, mittels einer Siebmethode, z. B. Sieb des Eratosthenes oder Sieb von Atkin, eine genügend lange Liste von Primzahlen zu erstellen und diese dann bis zur gewünschten Primzahl zu durchlaufen. Dabei bestimmt man manchmal zunächst primzahlähnliche Mengen (Fastprimzahlen).

Satz von Wilson

Eine nicht sehr praktikable Formel für alle Primzahlen beruht auf dem Satz von Wilson. Die Formel lautet unter Verwendung der Abrundungsfunktion:

f(n)=n!mod(n+1)n(n1)+2 für natürliche Zahlen n

Nach dem Satz von Wilson ist n+1 prim genau dann, wenn n!mod(n+1)=n. Daraus folgt, dass die Formel nur Primzahlen liefert und jede Primzahl außer 2 genau einmal. Denn ist n+1 prim, so ist n!mod(n+1)n=1 und f(n)=n+1. Ist n+1 nicht prim, so ist n!mod(n+1)n=0 und f(n)=2.

Diophantische Mengen für Primzahlen

Nach den Arbeiten zu Hilberts zehntem Problem gibt es ein System von endlich vielen diophantischen Gleichungen (Polynomen über den ganzen Zahlen), die als Lösung alle Primzahlen und nur diese haben. Nach Juri Wladimirowitsch Matijassewitsch sollte es so ein System mit neun oder weniger Variablen geben. James P. Jones und Kollegen gaben 1976 ein System von 14 Polynomen in 26 Variablen an.[2] Explizit besteht das System aus den Gleichungen:

α0=wz+h+jq=0
α1=(gk+2g+k+1)(h+j)+hz=0
α2=16(k+1)3(k+2)(n+1)2+1f2=0
α3=2n+p+q+ze=0
α4=e3(e+2)(a+1)2+1o2=0
α5=(a21)y2+1x2=0
α6=16r2y4(a21)+1u2=0
α7=n++vy=0
α8=(a21)2+1m2=0
α9=ai+k+1i=0
α10=((a+u2(u2a))21)(n+4dy)2+1(x+cu)2=0
α11=p+(an1)+b(2an+2an22n2)m=0
α12=q+y(ap1)+s(2ap+2ap22p2)x=0
α13=z+p(ap)+t(2app21)pm=0

mit den Variablen a,,z. Dann und nur dann, wenn eine Lösung in natürlichen Zahlen existiert, ist die Variable k+2 eine Primzahl.

Das lässt sich auch in eine Ungleichung zusammenfassen:

(k+2)(1α02α12α132)>0

Wenn man für die einzelnen Variablen natürliche Zahlen einsetzt, ist k+2 genau dann eine Primzahl, wenn die Ungleichung erfüllt ist.

Es gibt auch ein die Primzahlen (und nur diese) erzeugendes System von n diophantischen Gleichungen mit nur zehn Variablen, allerdings mit sehr hohem Grad (in der Größenordnung 1045). Nach Thoralf Skolem kann man auch immer ein solches System mit nur Polynomen höchstens vierten Grades finden, allerdings ist in diesem Fall die Zahl der Variablen sehr hoch (mindestens 58, soweit bekannt).[3] Die Methoden sind bisher von keinem praktischen Nutzen.

Formel von Mills

W. H. Mills zeigte 1947,[4] dass es eine reelle Zahl A gibt, sodass

dn=A3n

für alle natürlichen Zahlen n prim ist. Man kann unter Annahme der Riemannschen Vermutung zeigen, dass das kleinste solche A (die sogenannte Mill’sche Konstante) einen Wert von etwa 1,3063778838630806904686144926 hat.[5] Die mit der Formel erzeugten Primzahlen heißen Mills-Primzahlen: d1=2, d2=11, d3=1361. Da über A wenig bekannt ist (noch nicht einmal, ob die Konstante rational oder irrational ist), hat die Formel aber keinen praktischen Wert.

Formel von Wright

Eine ähnliche Formel wie die von Mills fand E. M. Wright.[6] Wright zeigte, dass es eine reelle Zahl α gibt, sodass

gn=222α

prim ist für alle n1.

Dabei ist gn rekursiv definiert:

g0=α
gn+1=2gn für n0

Wright gab mit α=1,9287800 auch die ersten Dezimalstellen von α an. Das ergibt die Primzahlen g1=2α=3, g2=13 und g3=16381. Es zeigt sich, dass mit einem Wert von α1,9287800

g4=2222α=19139664204631104...822015417386540

(die Punkte bedeuten 4900 nicht dargestellte Dezimalstellen) eine Zahl mit 4932 Dezimalstellen ist, die aber gerade (das heißt, keine Primzahl) ist, das heißt, dieser Wert von α muss leicht korrigiert werden.[7] Für die folgenden Primzahlen braucht man noch weit mehr Dezimalstellen.

Da die Formel auf der Kenntnis von α beruht, ist sie praktisch ebenso nutzlos wie die von Mills.

Conways Primzahlgenerator

Für die primzahlerzeugende Maschine (PRIMEGAME) von John Horton Conway[8] siehe FRACTRAN. Die Methode ist allerdings ebenfalls nicht praktikabel zur Generierung von Primzahllisten.

Primzahlgenerator für endliche Primzahlmengen

Ross Honsberger[9] gibt einen einfachen Beweis für folgenden Satz:

Man teile die ersten n Primzahlen beliebig auf zwei disjunkte Mengen A,B auf, sodass AB={2,,pn}. Sei a das Produkt der Elemente von A und b das der Elemente von B. A darf auch leer sein, dann ist a=1 (leeres Produkt). Falls nun a+b<pn+12, dann ist a+b eine Primzahl, und |ab| ist prim, wenn 1<|ab|<pn+12.

Beispiel: pn=5 (betrachtet werden dann nur Zahlen kleiner als pn+12=72=49):

23+5=11,235=1
25+3=13,253=7
35+2=17,352=13
235+1=31,2351=29

Zweites Beispiel: pn=11 (betrachtet werden dann nur Zahlen kleiner als pn+12=132=169):

211+357=127
351127=151

Jedoch sind

35+2711=169,
235117=323

nicht kleiner als 169 und daher nicht prim.

Einzelnachweise

  1. Vorlage:MathWorld
  2. James P. Jones, Daihachiro Sato, Hideo Wada, Douglas Wiens: Diophantine representation of the set of prime numbers. American Mathematical Monthly, Band 83, 1976, S. 449–464.
  3. James P. Jones: Universal diophantine equation. Journal of Symbolic Logic, Band 47, 1982, S. 549–571.
  4. Mills: A prime-representing function. Bulletin of the AMS, Band 53, 1947, S. 604.
  5. Vorlage:OEIS.
  6. E. M. Wright: A prime-representing function. American Mathematical Monthly, Band 58, 1951, S. 616–618.
  7. Robert Baillie: Wright's Fourth Prime [1]
  8. Richard K. Guy: Conway's Prime Producing Machine. Mathematics Magazine, Band 56, 1983, S. 26–33.
  9. Honsberger: More Mathematical Morsels. Mathematical Association of America 1991, S. 108 (Morsel 20).