Primzahl-Zahlengitter
(susam.net)- Primzahl-Zahlengitter ist ein Tool, das Muster und Strukturen von Primzahlen visuell darstellt
- Dieses Gitter ordnet Zahlen in einer zweidimensionalen Form an, sodass sich die Verteilung von Primzahlen auf einen Blick erfassen lässt
- Durch die Analyse von Mustern lassen sich Einblicke in die Regelmäßigkeit oder Zufälligkeit von Primzahlen gewinnen
- Es hilft Lernenden in Programmierung und Mathematik, die Primzahltheorie intuitiv zu verstehen
- Es kann als Referenzmaterial genutzt werden, um Primzahlverteilungen aus verschiedenen Blickwinkeln zu untersuchen
Überblick über das Primzahl-Zahlengitter
- Dieses Tool ordnet Zahlen in Form eines zweidimensionalen Gitters an und dient dazu, visuell zu unterscheiden, ob jedes Feld eine Primzahl darstellt oder nicht
- Nutzer können den Bereich für Zeilen und Spalten festlegen und so Gitter in verschiedenen Größen und Formen erzeugen
- Innerhalb des Gitters werden Primzahlen durch Farben oder Markierungen klar hervorgehoben, sodass sich ihre Verteilung direkt erkennen lässt
- Muster wie regelmäßige Verteilungen, Diagonalen oder Cluster lassen sich leicht untersuchen; das fördert die mathematische Intuition
- Das Tool bietet Entwicklern und Studierenden eine Quelle, die sich als Referenz für Algorithmen oder Visualisierungsarbeiten eignet
Merkmale und Anwendungsbeispiele
- Die Position jeder Zahl spiegelt ein Ergebnis wider, bei dem schnell festgestellt wurde, ob sie eine Primzahl ist
- Es kann große Zahlenmengen auf einmal verarbeiten, sodass sich auch die Primzahlverteilung großer Zahlen untersuchen lässt
- Es lässt sich leicht an verschiedene Gitterformen anpassen, etwa quadratische oder rechteckige Layouts
- Es ist wichtiges Lern- und Analysematerial für Mathematikunterricht, Algorithmusforschung und visuelle Präsentationen
- Es kann nicht nur für mathematische Erkundungen genutzt werden, sondern auch in Bereichen wie Programmier-Challenges oder Interviews
1 Kommentare
Hacker-News-Kommentare
Hallo! Ich habe gestern Abend zum Spaß dieses einfache Visualisierungstool für Primzahlgitter gebaut. Inspiriert wurde ich von einem "Show HN"-Beitrag, über den ich vor ein paar Tagen gestolpert bin. Es verwendet den Miller-Rabin-Primzahltest und nimmt die Primzahlen aus OEIS-Sequenz A014233 als Basis, sodass sich sogar Zahlen bis 3317044064679887385961980 auf Primzahl-Eigenschaft prüfen lassen. Als Beispiel könnt ihr diesen Link ansehen. Die drei Kreise dort stehen für die folgenden Primzahlen: 3317044064679887385961783
3317044064679887385961801
3317044064679887385961813
Ich hoffe, es macht euch auch Spaß.
Die Visualisierung ist wirklich großartig! Es wäre toll, wenn es eine Funktion gäbe, die anzeigt, um welche Primzahl es sich handelt, wenn man mit der Maus über einen Punkt fährt. Und ich frage mich, ob sich neue Muster beobachten lassen, wenn man die Anzahl der Spalten pro Zeile jeweils um X erhöht, oder wenn X selbst eine Primzahl ist.
Danke, dass du das gebaut hast! Es macht wirklich Spaß, die Spaltenzahl schnell hochzudrehen und dabei wiederkehrende Muster, kleine Wirbelbewegungen oder weit gebogene Linien zu entdecken. Als Kind mochte ich an Mathematik besonders dieses logisch-rätselhafte Element, aber gegen Ende der Schulzeit und an der Uni wurde Mathematik für mich immer abstrakter und dadurch schwieriger greifbar. Mit so einem Visualisierungstool hätte ich mathematische Konzepte wahrscheinlich viel konkreter wahrgenommen und wäre neugierig auf die Beziehungen hinter den Formeln geblieben.
Es wäre auch wirklich spannend, wenn man das Zahlensystem auf Basis 16 oder andere Basen umstellen könnte. Ich bin sehr neugierig, welche Musteränderungen dann auftreten würden.
So cool! Nachdem ich gesehen habe, was du gebaut hast, habe ich mich selbst visuell tief in die Mustersuche gestürzt :D Aber da man Spalten und Zeilen beliebig anordnen kann, war mein Versuch am Ende wohl nicht besonders aussagekräftig :D
Mal eine seltsame Methode: Ich betrachte ganze Zahlen in Blöcken von jeweils 100 Zahlen. Wenn ein Block eine Primzahl enthält, wird er schwarz gefärbt, andernfalls rot. Der erste Block enthält 100 aufeinanderfolgende ganze Zahlen, der zweite jede zweite Zahl, der dritte jede dritte Zahl und so weiter. Jeder Block beginnt direkt dort, wo der vorherige endet. In Zeile 1 gibt es einen Block, in Zeile 2 zwei, in Zeile 3 drei usw. Hier ist eine Abbildung. Es sieht aus wie Hieroglyphen aus einem anderen Universum. Ich verstehe noch nicht wirklich, warum es so aussieht. Zum Vergleich mit einer Zufallsverteilung kann man den Code so ändern: if (isPrime(myNum)) return 1; zu if (Math.random()>0.99) return 1; und der Unterschied ist deutlich. Ich frage mich wirklich, woher die Symmetrie und die Eigenschaften dieser primzahlbasierten Muster kommen.
Dieser Kommentar erklärt die Abbildung gut. Im Kern ist es eine Visualisierung von gcd(x,y) und hat fast nichts mit Primzahlen zu tun. Wenn man das weiß, versteht man die Ursachen vieler Muster viel leichter. Trotzdem ist es eine wirklich interessante Visualisierung.
Die Erklärung weicht leicht vom verlinkten Code ab. Es ist nicht so, dass der N-te Block mit ganzen Zahlen im Abstand von N gefüllt wird, sondern dass jeder Block in der N-ten Zeile ganze Zahlen im Abstand von N enthält. Zum Beispiel ist der erste Block der zweiten Zeile {101, 103, 105, ..., 299}, der zweite Block {102, 104, 106, ..., 300}. Wenn man dieses Prinzip versteht, werden die Muster in diesem Kommentar gut erklärt.
Ich habe mich ziemlich in diese Idee vertieft. Zuerst dachte ich, das lasse sich leicht mit der Ulam-Spirale verknüpfen, aber dieser rabbit hole führt zu Polynomresten und der mysteriösen "Conjecture F" (Erklärung). Zu parallax primes gibt es unter diesem Link ausführlichere Erklärungen und Hintergrundwissen; besonders befriedigend fand ich die geometrische Deutung auf dieser Seite.
Ich habe damit auf diese Weise herumgespielt: Beispiel. Wenn man nur gerade oder nur ungerade Blöcke wiederholt, scheint das Muster tatsächlich zu konvergieren. Wirklich merkwürdig.
Ich würde vorschlagen, auch einmal eine Ulam-Spirale zu zeichnen: Ulam spiral wiki. Und falls das der Anfangszustand für Conways Game of Life wäre, frage ich mich wirklich, ob sich interessante Muster entwickeln würden. Wenn man Startgitter verschiedener Größen per brute force durchprobiert, könnte man vielleicht Spiele auswählen, die mehr als ein paar Schritte überleben, und sie dann von Menschen beobachten lassen. Wenn eine bestimmte kleine Primzahlstruktur oder Spirale tatsächlich etwas Besonderes erzeugt, könnte das auf HN einiges auslösen.
Nicht exakt dasselbe, aber ich habe vor über zehn Jahren einmal einen Ulam-Spiral-Generator gebaut. Link. Er markiert nicht nur Primzahlen, sondern bestimmt die Punktgröße anhand der Anzahl gerader Teiler der Zahl an jeder Position.
Noch eine Stimme für die Ulam-Spirale. Ich habe mich zuerst gewundert, warum keine Diagonalen zu sehen waren. Ich hatte eigentlich die klassische Ulam-Spirale erwartet.
Ein weiteres Ulam-Spiral-Tool
Meine Intuition bei Primzahlen war immer, dass sie sehr schnell selten werden, aber in Wirklichkeit gibt es enorm viele davon.
Primzahlen werden tatsächlich immer schwerer zu finden. Wenn man zum Beispiel alle Primzahlen in einer einzigen Zeile zeichnet, sieht man den Unterschied sehr deutlich (siehe hier). Der bekannte Primzahlsatz aus der Zahlentheorie behandelt genau das. Die Anzahl der Primzahlen kleiner oder gleich n wird durch n/log n approximiert, und die Dichte der Primzahlen in der Nähe von n konvergiert gegen 1/log n. Siehe auch meine Erklärung zum Primzahlsatz und Wikipedia.
Zu diesem Thema wurde wirklich sehr viel geforscht: Wikipedia
Das denken die meisten Leute. Ich vermute, weil man lernt, dass Primzahlen schwer zu finden seien. Tatsächlich ist es nicht schwer, Primzahlen zu finden. Was schwierig erscheint, ist nur zu entscheiden, ob eine gegebene ganze Zahl prim ist. Tatsächlich gibt es mehr Primzahlen als Quadratzahlen.
Wenn
colsein Primwert ist, kommen die Muster besonders schön zur Geltung.Wenn
columnseine Primzahl p ist, haben die Zahlen in jeder Spalte beim Teilen durch p denselben Rest. Dadurch entstehen diagonale Muster, weil Vielfache von p keine Primzahlen sind.Es ist nicht nur dann interessant, wenn die Spaltenzahl selbst prim ist; auch wenn
cols+1odercols-1viele Teiler haben, etwa 25, 91 oder 119, entstehen spannende Muster. Interessant ist auch, dass Zahlen in der Nähe von Primzahlen viele Teiler haben können.Bei 7 Spalten sieht man viele Diagonalen von rechts oben nach links unten, bei 5 Spalten eher von links oben nach rechts unten. Mich interessiert auch die Häufigkeit aufeinanderfolgender sexy primes. Ich würde gern wissen, ob dieses Muster bei großen Zahlen zusammenbricht.
Die Muster bei
cols % 30 == 0(30, 60, 90, 120 usw.) sind wirklich interessant. Die geraden vertikalen Linien treten deutlich hervor. Wenn man 1 addiert oder subtrahiert (119 oder 121), scheint sich das Muster nach links oder rechts zu "drehen". Ein wirklich tolles Visualisierungstool.Die meisten sichtbaren Muster sind in Wahrheit keine Eigenschaft von Primzahlen. Wenn man einfach nur Zahlen markiert, die nicht durch die ersten 100 natürlichen Zahlen teilbar sind, erhält man fast dieselben Bilder.
Ich habe kürzlich auch ein Visualisierungstool für Primzahlen gebaut:
https://ilmenit.github.io/prime-fold/
Es ist nicht nur eine Visualisierung, sondern auch ein Tool, das mit evolutionären Algorithmen und einer Fitnessfunktion mathematische Funktionen findet, die Primzahlen erzeugen oder enthalten.
PrimeFold-Modus (2D-Embedding): Man gibt zwei Funktionen
f_x(n),f_y(n)ein oder entwickelt sie evolutiv weiter, um Zahlen auf 2D-Koordinaten abzubilden. Primzahlen und zusammengesetzte Zahlen werden unterschiedlich visualisiert. Beispiel:f_x(n) = n,f_y(n) = n^2.PrimeGen-Modus (1D-Generierung): Man gibt eine Funktion
f(n)ein oder entwickelt sie evolutiv weiter, um eine Zahlenfolge zu erzeugen. Visualisiert wird, ob jeder Ausgabewert prim ist, sowie die Anzahl eindeutiger Primzahlen. Beispiel:f(n) = 2*n + 1Wenn man es auf 1, 7, 100 setzt, fühlt es sich an, als würde man einen Sternbilder-Ticker im Stil der Chevron-Anzeigen aus Stargate sehen :D
Wenn man bei diesem Link herauszoomt und den
cols-Wert schrittweise erhöht und verringert, kann man die Musterveränderungen beobachten. Besonders eindrucksvoll sind die Änderungen von -7 bis +5. Dasselbe gilt auch für #1-200-420.Ich habe aus Langeweile in Python die Endziffern aufeinanderfolgender Primzahlen (im Dezimalsystem) verglichen und dabei eine interessante Beziehung entdeckt. Ich habe 2 und 5 ausgeschlossen, weil sie nur einmal vorkommen, und dann die Übergänge zwischen Endziffern wie 1->3, 1->5 usw. nach Häufigkeit gezählt. Da ich Primzahlen für zufällig hielt, hatte ich erwartet, dass die Häufigkeiten fast gleich sind, aber tatsächlich gab es statistisch signifikante Unterschiede. Warum das so ist, weiß bislang offenbar niemand.
Mein Gefühl war, dass Primzahlen viel seltener sind und ihre Häufigkeit mit wachsender Zahl viel schneller abnimmt, aber tatsächlich gibt es immer noch sehr viele davon. Selbst bei [1, 10.000, 10.000] ist der untere Bereich noch recht dicht. Natürlich wird er weniger dicht. Der durchschnittliche Abstand zwischen Primzahlen ist
log(n)(Primzahlsatz).