GrĂŒĂe! Ich beschloss nach Belieben, das Problem der Suche nach Primzahlen zu untersuchen. Das Thema ist umfangreich und interessant. Ich möchte ein paar Gedanken darĂŒber teilen, die mir in den Sinn kamen. Eine Suche im Internet ergab keine solchen Hinweise auf ihre OriginalitĂ€t.
Erstens habe ich nie eine mathematische Formel gefunden, um Primzahlen der Reihe nach zu berechnen. Wenn es jedoch Algorithmen gibt, ist es sicherlich möglich, Formeln mit logischen Funktionen oder Operatoren zu erstellen. Ich gebe unten die prÀgnanteste Formel an, die sich herausstellte.
FĂŒr eine Folge von Zahlen
( X m ) = x 1 , x 2 , x 3 , . . . x m a x Wir stellen den Operator der Erkennung der ersten Zahl gleich a vor:
\ mathbf {Dt_ {a}} (x_ {m}): = \ left \ {\ begin {matrix} m \ \ mathbf {if} \ \ muss \ m: \ forall \, k <m \ x_ {k} \ neq a \ \ mathbf {und} \ x_ {m} = a \\ 0 \ \ mathbf {andernfalls} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ end {matrix} \ right.
\ mathbf {Dt_ {a}} (x_ {m}): = \ left \ {\ begin {matrix} m \ \ mathbf {if} \ \ existiert \ m: \ forall \, k <m \ x_ {k } \ neq a \ \ mathbf {und} \ x_ {m} = a \\ 0 \ \ mathbf {andernfalls} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ end {matrix} \ right.
Alle Primzahlen, beginnend mit 5, können nach folgender Formel berechnet werden:
Pn=Pnâ1+2 mathbfDti0( mathbfDtj0((Pnâ1+2i))modPj+1)), foralln geqslant3 forallimax geqslant max fracP alphaâP alphaâ12+10 ,, 2 leqslant alpha leqslantnâ1; jmax= pi( sqrtPnâ1+2i)â1
Betreiber
mathbfDtj0 iteriert vorbei
j der Rest der Division jeder Kandidatennummer durch Einfachheit mit
i Nummer
(Pnâ1+2i) zu Primzahlen, die bereits im Bereich bis zu gefunden wurden
Pjmax+1 . Die Kandidatennummern werden in der Reihenfolge aus dem Satz ungerader Zahlen ausgewĂ€hlt, die gröĂer als die vorherige Primzahl sind
Pnâ1 .
pi( sqrtPnâ1+2i) Ist eine pi-Funktion, die die Anzahl der Primzahlen anzeigt
leqslant sqrtPnâ1+2i .
Betreiber
mathbfDti0 iteriert vorbei
i Bedienerausgabewerte
mathbfDtj0 bis es 0 findet. Da die Reihe der Primzahlen unendlich ist, wird dies frĂŒher oder spĂ€ter geschehen. Am Ausgang des Betreibers
mathbfDti0 Es wird also immer eine Nummer geben
i . Untergrenze
imax wird durch die maximale Differenz benachbarter Primzahlen bestimmt, die kleiner als die gewĂŒnschte sind. Die Zunahme dieser Differenz erfolgt logarithmisch. Die folgende Grafik zeigt die AbhĂ€ngigkeit des maximalen und durchschnittlichen Wachstums
DeltaP alpha von
n fĂŒr die ersten 100.000 Primzahlen. Der Maximalwert wurde abgetastet und fĂŒr jeweils tausend Zahlen gemittelt.

Die maximale Zunahme der Differenz der Primzahlen
deltamax( DeltaP alpha) zum vorherigen Maximalwert
max( DeltaP alpha) gleich 20 (fĂŒr die Differenz der Primzahlen 31397-31469 = 72 in Bezug auf die Differenz 25523-25471 = 52). Es ist in der Region, in der die Ableitung des HĂŒllkurvenlogarithmus erfolgt
DeltaP alpha immer noch groĂ genug und Primzahlen sind nicht mehr zu klein. Basierend auf diesem Wert wird die Bedingung fĂŒr
imax . Grafik
deltamax( DeltaP alpha) fĂŒr die ersten 50.000 Primzahlen unten angegeben. Die Werte wurden fĂŒr jeweils tausend berechnet.

Der Peak ist bei 20 sichtbar. Mit zunehmendem
n geht der Graph auf Minus und zeigt eine Abnahme der Wachstumsrate groĂer Primzahlen.
Die zweite Ăberlegung besteht darin, die Berechnung einer Folge von Primzahlen zu optimieren.
Der in der obigen Formel festgelegte Algorithmus ist eine verbesserte Methode zum AufzĂ€hlen von Teilern. Verbesserungen bestehen darin, gerade Zahlen von der Betrachtung auszuschlieĂen und die Teilbarkeit nur von Primzahlen zu ĂŒberprĂŒfen, die kleiner als sq sind. die Wurzeln der Kandidatennummern. Der schwierigste Teil des Algorithmus ist die Berechnung des Satzes der verbleibenden
Mod- Funktionen. Durch die Optimierung dieser Funktion kann die KomplexitÀt reduziert werden. Es gibt jedoch einen noch effektiveren Weg. Lass
(rnâ1j+1)=r2,r3,...r pi( sqrtPnâ1) Ist eine Folge von Resten aus der Aufteilung der zuletzt gefundenen Primzahl in Primzahlen von 3 bis zur Wurzel. Wir werden Sequenzen der Form machen
(rni,j+1)=(r2+2i)modP2,(r3+2i)modP3,...(r pi( sqrtPnâ1)+2i)modP pi( sqrtPnâ1),(Pnâ1+2i)modP pi( sqrtPnâ1+2i)
in der Reihenfolge ab
i=1 . Der letzte Term wird berechnet, wenn
pi( sqrtPnâ1+2i) neq pi( sqrtPnâ1) . Wenn in einem Schritt der Berechnung der Rest
rni,j+1 wird gleich 0, gehe zur nÀchsten Sequenz. Dies geschieht, bis
i gefunden wird, bei dem alle RĂŒckstĂ€nde ungleich Null sind. Dies bedeutet, die nĂ€chste Primzahl zu finden. Sequenz
(rnj+1) Es muss gespeichert werden, bis die nÀchste Primzahl gefunden wird. Die wiederkehrende Formel zur Berechnung von Primzahlen auf diese Weise wird konvertiert in:
Pn=Pnâ1+2 mathbfDti0( mathbfDtj0(rni,j+1)), foralln geqslant3
In dem vorgestellten Algorithmus wird die Operation
mod erleichtert: teilbar durch
(rj+1+2i)/Pj+1 mal mehr TrennwĂ€nde. Die einzigen Ausnahmen sind das Auftreten neuer einfacher Teiler. Im Computerspeicher ist es bei der Implementierung des Algorithmus erforderlich, ein Array von Primzahlen an der Wurzel des gesuchten sowie ein variables Array von Residuen zu speichern. Die KomplexitĂ€t des Algorithmus im allgemeinen Sinne (der Arbeitsaufwand) kann geringer sein als die anderer bekannter Methoden. Die komplexesten Operationen darin sind die Extraktion der Quadratwurzel, die Berechnung von Resten und die Multiplikation. Die Wurzel kann auf die nĂ€chste ganze Zahl extrahiert werden. Um RĂŒckstĂ€nde zu erhalten, können Sie einen effektiven Algorithmus verwenden, der auf der allgemeinen Teilbarkeitsregel basiert. Die Multiplikation wird nur mit 2 relativ kleinen Zahlen
i verwendet . Die zeitliche KomplexitÀt des Algorithmus kann reduziert werden, indem die Arbeit gemÀà den Werten von
i verteilt wird . Das auf diese Weise erhaltene segmentierte Sieb sollte auf Multithread-Computern schneller funktionieren. Die geleistete Arbeit wird jedoch aufgrund der Erhöhung der Dividenden gröĂer sein. Sie können die Radfaktorisierung auch auf den Algorithmus âschraubenâ. Mit der optimalen GröĂe der RĂ€der kann dies die KomplexitĂ€t in einem bestimmten Bereich von
n reduzieren - bis die Hardware "wild" es verlangsamt.
Vielleicht wird jemand meine Gedanken nĂŒtzlich machen.