Schuld an allem ist mein lieber Informatik Leistungskurs Lehrer, Herr Wolfgang Laubach, der mir schon damals – es mag ca. 1986 gewesen sein – den Floh ins Ohr setzte, als er uns eines Tages von Stanislaw Ulam und seiner „Zahlenspirale“ berichtete. Ich bin Herrn Laubach für so viele mathematische Kleinode so dankbar, nicht nur für dieses!

Primzahlen-Spiralen

Es geht um Primzahlen und deren Verteilung unter den natürlichen Zahlen. Die Story, die uns unser Lehrer erzählte, ging in etwa so: Ulam saß mal wieder in einem langweiligen Vortrag und kritzelte gedankenverloren auf seinem Block vor ihm herum. Er begann, die natürlichen Zahlen in Form einer Spirale auf sein Kästchenpapier zu schreiben:


Dann malte er all die Kästchen aus, in denen Primzahlen standen, also etwa so:


Schon wenn man das für wenige Zahlen, etwa die ersten 100 macht, gibt es interessanterweise ein paar Auffälligkeiten: die ausgemalten Kästchen scheinen sich gern auf Diagonalen Linien zu häufen!


Wenn man dann massiv herauszoomt, fällt es noch mehr auf (hier entspricht ein Pixel einer Zahl, schwarz wieder die Primzahlen):

Quelle: Wikipedia

Hier sind die ersten 40.000 Zahlen zu sehen (200×200), darunter sind genau 4.203 Primzahlen, also sind ca. 10,5% schwarze Pixel im Bild. Man sieht klar v.a. diagonale Strukturen.

Aber keine Sorge: das wird keine Mathe-Abhandlung hier. Warum das alles so ist, soll nicht Gegenstand dieses Blog-Beitrags sein, da gibt es im Web schöne Beiträge. Ich will auf etwas ganz anderes  hinaus.

Computer Kurzweil

Solche mathematischen Spielereien haben mich schon immer fasziniert, spätestens seit der Oberstufe / dem Mathe LK. Was habe ich die Computer-Kurzweil Rubrik von A.K. Dewdney in der Spektrum der Wissenschaft immer verschlungen und die Specials Sammel-Ausgaben gekauft, später dann im Mathe-Studium! Und natürlich Dewdneys Vorgänger, Martin Gardner und Douglas Hofstadter, Autoren unzähliger Bücher über mathematisch-informatische Gehirn-Verdreher. Und Roger Penrose! Hach …

Damals habe ich das ein oder andere „Ding“ dann an meinem PC in irgend eine Form von Software gegossen, mein größtes Projekt war wohl ein Fraktale-Generator, geschrieben in Turbo-Pascal mit eigener Fenster-Verwaltung, überlagerten Menüs etc.

Mal eben auf dem iPad programmieren?

Auch heute faszinieren mich immer noch diese Dinge, aber heute ist das „mal eben“-Programmieren kleiner Programme, die einen mathematischen Zusammenhang visualisieren nicht mehr ganz so einfach. Na, oder sagen wir, es ist schlicht anders geworden. Früher war es vielleicht „direkter“ möglich, mal eben Pixel auf dem Bildschirm an- oder auszuknipsen, dafür hatte man noch keine Smartphones oder Tablets. Heute haben wir diese und nutzen sie immer häufiger als Desktops und Laptops, aber mal eben ein Pixel einschalten geht da auch nicht so leicht, da braucht es schon eine Menge an App-Framework drumherum. Und das will erstmal durchblickt werden.

Aber … genau für solche Zwecke gibt es da doch etwas, was es uns Mathe-Hacks-Bastlern einfach macht. Zumindest auf einem iOS Gerät: die geniale App Pythonista vom deutschen Entwickler Ole Zorn! Innerhalb dieser App kann man nämlich in der (ziemlich universellen) Programmiersprache Python durchaus (fast) „mal eben“ Pixel setzen.

Ulam-Spiralen auf dem iPad

Und das habe ich für das Ulam Spiralen Thema dann mal gemacht. Aber bevor wir zum Programmcode kommen, noch ein bisschen Theorie. Denn bei meiner Recherche zum Thema „Ulam Zahlenspiralen“ bin ich vor allem darüber gestolpert (hier und hier), dass es noch interessanter ist, statt der rechteckigen Anordnung der Zahlen auf dem Kästchenpapier die natürlichen Zahlen tatsächlich auf einer Spiralkurve anzuorden – und zwar so, dass die Quadratzahlen genau auf der x-Achse zu liegen kommen. Das sieht dann also bei drei „Umdrehungen“ so aus:

Bei mehr Zahlen und Hervorhebung der Primzahlen sieht das dann z.B. so aus:

Und wenn man noch mehr Zahlen unterbringt, die Spirale und die Zahlen selbst nicht „malt“, bekommt man ein solches Bild:

Und dann gab es da einen Herrn Euler, der fand mal ein Polynom, bei dem man erst dachte, „Mensch! Das produziert ja lauter Primzahlen!“. Das war das Polynom n²+n+41. Das – und beliebige andere Polynom der Form an²+bn+c –  lässt sich in meiner Software schön einblenden:

Man sieht: auf der blauen „Kurve“ (eher ein Polygonzug) liegen nur rote Punkte, also Primzahlen – zumindest ununterbrochen 40 Schritte lang (für n von 0 bis 39).

Die Software

Was ich in Pythonista auf einem iPad dazu geschrieben habe, nenne ich „Number Spiral Explorer“ und es sieht aktuell so aus:

Number Spiral Explorer V1.0

Wer jetzt Lust bekommen hat, mit meinem „Number Spirals Explorer“ auf seinem iPad herumzuspielen, der braucht nur Pythonista und meinen Quellcode. Den kann man per copy/paste in Pythonista bekommen (NumberSpirals.py), aber das User-Interface besteht aus zwei .pyui Dateien, die man z.B. via Dropbox ganz gut in Pythonista rein bekommt (dabei hilft DropboxFilePicker.py – inkl. der kleinen Anleitung in den ersten Kommentarzeilen).

Ole himself hat mich darauf aufmerksam gemacht, dass man diesen Dropbox Umweg gar nicht braucht. Das geht viel einfacher, nämlich so:

  1. Den Link zum ZIP File unten auf dem iPad in Safari kurz antippen.
  2. „More …“ tippen.
  3. „Run Pythonista Script“ antippen.
  4. „Import File“ antippen.
  5. Den Dialog „File Saved“ mit OK bestätigen.
  6. Zu Pythonista wechseln. Hier ist in der Dateiliste jetzt das ZIP File hinzugekommen.
  7. Das ZIP File antippen.
  8. „Extract Archive…“ tippen.
  9. Aus dem ZIP File ist ein gleichnamiger Ordner entstanden, der die drei im ZIP File enthaltenen Dateien (NumberSpirals.py, NumberSpirals.pyui, NumberSpiralsSettings.pyui) enthält.
  10. NumberSpirals.py auswählen und den Play Button rechts oben tippen. (Wenn man den Play Button gedrückt hält, kann man wählen, ob das Programm mit Python 2 oder Python 3 laufen soll. Meins läuft mit Python 3.)

Hier alle drei Quelldateien als ZIP Datei: NumberSpiralExplorer10source

Viel Spaß beim Experimentieren! Hab ich euer Interesse geweckt? ?

Und bitte Nachsicht: ich lerne Python noch … Da sind Fehler bzw. ungeschickte Lösungen drin, ich weiß. Auf freundliches Feedback freue ich mich natürlich! ?