% Content-encoding: UTF-8
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\setcounter{secnumdepth}{0}
\setcounter{tocdepth}{0}

\begin{document}

\title{Ulam–Spirale}
\author{Michael Kalus}
\maketitle

Ein bescheidener Versuch und die Aufforderung, weiter zu machen.

\begin{multicols}{2}

Neulich stöberte ich im Internet und stieß dabei auf die Ulam--Spirale. Eine interessante Sache. Nun, er\-klä\-ren kann ich das Phänomen natürlich auch nicht. Aber natürlich kam mir in den Sinn, wie so eine Spirale denn wohl per Forth--Programm ausgedruckt werden könnte.

Nun, was ist eine Ulam--Spirale? Es ist eine einfache Methode, Primzahlen grafisch darzustellen. Sie wurde 1963 von dem polnischen Mathematiker 
\selectlanguage{polish}
Stanis{\lpb}aw Marcin Ulam
\selectlanguage{ngerman} während eines wissenschaftlichen Vortrags entdeckt, als er, aus Langeweile, Zahlenreihen auf ein Papier kritzelte. Er begann mit einer \emph{1} in der Mitte und fuhr dann in Spiralform fort:

\begin{verbatim}
   43   44   45   46   47   48   49 ...
   42   21   22   23   24   25   26
   41   20   07   08   09   10   27
   40   19   06   01   02   11   28
   39   18   05   04   03   12   29
   38   17   16   15   14   13   30
   37   36   35   34   33   32   31
\end{verbatim}

Werden nur alle Primzahlen dargestellt, erhält man folgendes Muster:

\begin{verbatim}
   43    -    -    -   47    -    - ...
    -    -    -   23    -    -    -
   41    -   07    -    -    -    -
    -   19    -    -   02   11    -
    -    -   05    -   03    -   29
    -   17    -    -    -   13    -
   37    -    -    -    -    -   31
\end{verbatim}
\columnbreak
Überraschenderweise liegen ja sehr viele Primzahlen auf diagonalen Geraden. Mehr als eine nette Spielerei? Nun, falls jemand mehr dazu sagen kann, nur zu!  

Hier also nun mein Versuch, diese Spirale mittels Forth zu drucken. Die Begrenzung ergibt sich aus der Papiergröße bzw Bildschirmgröße. Die Zahlen ergeben sich zwar einfach nur aus n=n+1 aber sollen ja spiralförmig um ihr Zentrum herum niedergeschrieben werden. Diesen Vorgang bilde ich ab, indem die Zahlen zunächst spiralförmig in ein Array geschrieben werden. Hinterher kann das Array dann zeilenweise ausgelesen und gedruckt werden. 

Nun bin ich noch auf der Suche nach Folgendem: Wie legt man in Forth das Array dynamisch an, damit so etwas wie 

\begin{verbatim}
 : ulam ( xmax ymax -- ) ... ;
\end{verbatim}

möglich wird? Und wie lassen sich in Forth die Primzahlen erkennen und markieren?

Viel Spaß beim Knobeln, Michael

\vspace*{3.5cm}

Quelle: \url{http://de.wikipedia.org/wiki/Ulam-Spirale}
\end{multicols}

\begin{small}
\begin{quote}
\listinginput[1]{1}{2007-0304/ulam.fs}
\end{quote}
\end{small}
\end{document}
