| Thomas Timmermann |
|
|
|
|
|
|
3 | 4 | 5 | 6 | 8 | 9 | 12 | 13 | 14 | 16 | 22 | 30 | 31 | 33 | 36 | 37 | 40 |
| 5 | 8 | 9 | 15 | 20 | 21 | 40 | 25 | 39 | 48 | 63 | 135 | 61 | 105 | 168 | 73 | 180 |
Naheliegend ist die iterative (
) Berechnung von
unter Verwendung des Euklidischen
Algorithmus zur Bestimmung des größten gemeinsamen Teilers von
und der Laufvariable
.
Wir gehen im folgenden von der Primfaktorenzerlegung von
aus und entwickeln nach
einigen Vorbetrachtungen zwei andere Algorithmen sowie eine geschlossene
Formel zur Berechnung von
für beliebige gegebene
. Dieser Ansatz wird, wie aus Tabelle
2 ersichtlich, einen wesentlichen Effizienzgewinn liefern.
| 1000 | 10000 | 100000 | 1000000 | |
| Anwendung des Euklidischen Algorithmus | 0.3 | 32 | 4039 | - |
| in 3.1 vorgestellter Algorithmus | 0.3 | 0.2 | 2.1 | 30.0 |
| Berechnung nach Formel (18) | 0.3 | 0.1 | 1.1 | 19.7 |
|
|
|
|
![]() |
(1) |
Es gilt (wobei
die Anzahl der Elemente einer endlichen Menge
bezeichnet)
![]() |
Die Teilbarkeit von
läßt sich dann in der Sprache der Ordnungsrelation
auf
formulieren. Sei
|
|
Dann gilt
|
|
| (2) |
Das bezüglich
maximale Element in
ist offensichtlich
:
.
Die Anzahl der Zahlen
(
) mit
sei mit
bezeichnet,
| (3) |
Offensichtlich gilt
![]() |
(4) |
Im weiteren dient der Erläuterung stets das Beispiel
![]() |
(5) |
Zur Veranschaulichung der oben eingeführten Begriffe und
Beziehungen denke man sich die
als Gitterpunkte eines
-dimensionalen Feldes, wobei jeweils
der
-ten
Dimension der
-te Primfaktor
von
, zugeordnet ist. Nach (1) erhält man damit auch
eine Anordnung von
in diesem Gitter.
Ein Teiler
von
teilt
genau dann, wenn dieser entlang aller Koordinatenachsen
,,weiter
rechts`` (
) oder ,,gleichauf`` (
) liegt, also wenn
(vgl. Bild 1).
Bild 1: Teiler von
,
vgl. (5),(1)
Aus (2) und (3) folgt mit
![]() |
(6) |
Bild 2: Feld der
für n=180,
vgl. (5) u. Bild 1; Identische Teilsummen bei der Berechnung von
für
verschiedene
nach (6)
Durch ,,dynamische Programmierung`` kann der auf Gleichung (6) basierende rekursive Algorithmus in einen effizienteren iterativen überführt werden. Dabei besteht die Grundidee darin, möglichst viele relevante Zwischenergebnisse zu speichern und geschickt wiederzuverwenden. Das wird wie folgt formalisiert:
Sei
die Standardbasis im
, d.h.
.
Für beliebige
-Tupel
sei die Summe
komponentenweise erklärt, d.h.
.
Die Summe aus (6) wird nun in rekurrente Teilsummen
(
) zerlegt:
![]() | (7) | (8) |
| (9) |
Nun erhalten wir die Summe aus (6) wie folgt:
![]() |
(10) |
| (11) |
| (12) |
In Bild 3 ist die Zerlegung der Summe aus (6) für das Beispiel
dargestellt
(vgl. (5) u. Bilder 1,2). Die Elemente, welche zu den Teilsummen
(
)
zusammengefaßt werden, sind durch gepunktete, gestrichelte bzw. volle Linien
verbunden.
Zur Berechnung von
wird das Feld
beginnend bei
,,absteigend`` durchlaufen (für das
Beispiel (5) in der Reihenfolge (2,2,1), (1,2,1), (0,2,1), (2,1,1), (1,1,1),
). In
jedem Iterationsschritt werden die
nach (9),
nach (12) und anschließend die
nach (8)
berechnet.
Bild 3: Feld der
für
; Zerlegung
der Summe aus () für
in Teilsummen nach (9).
Der in 3.1 vorgestellte Algorithmus ist immer noch nicht optimal, da er
einige Beziehungen der
nicht ausnutzt. Im folgenden wird ein anderer, fruchtbarerer
Ansatz zur Berechnung der
entwickelt. Dazu sind zuerst einige
Vorbetrachtungen notwendig.
Sei
.
kann als Menge der Eckpunkte eines
-dimensionalen
Hyperkubus interpretiert werden.
Sei ferner die Abbildung
von
auf
definiert durch
mit
![]() |
(13) |
Diese Abbildung liefert eine Einteilung von
in Klassen
(
). Es gilt, wie induktiv
ersichtlich wird,
![]() |
(14) |
Bild 4: Klasseneinteilung von
für
Durch Einsetzen von (2) in die Definitionsgleichung (3) der
erhält man
|
|
![]() |
![]() | (15) | ![]() | (16) |
Dieser geschlossene Formelausdruck für
wird hauptsächlich durch
bestimmt -
insofern, als daß gilt:
| (17) |
Nach Einsetzen von (15) in (4) kann ein geschlossener Formelausdruck für
entwickelt werden:
![]() |
![]() |
![]() |
(18) |
Wir geben im folgenden einen Beweis der Formel (18), der unabhängig von der
obigen Herleitung ist. Im Beweis wird gleichzeitig eine interessante
Eigenschaft von
gezeigt, nämlich daß
falls
.
Beweis:
Erster Schritt: Sei
(
...Primzahl,
). Dann folgt:
![]() |
|
Zweiter Schritt: Sei
mit
und
. Dann gilt
|
|
![]() |
Sei
fest. Dann liegen je zwei verschiedene Zahlen
in zwei
verschiedenen Restklassen modulo
. Es folgt
|
Damit erhält man induktiv
wenn die
paarweise teilerfremd, d.h.
|
![]()
Der Zeitaufwand der Berechnung von
nach dem in 3.1 vorgestellten
Algorithmus bzw. nach der expliziten Formel (18) wird durch den Aufwand der
Primfaktorzerlegung von
bestimmt. Diesen Aufwand zu unterbieten scheint nicht möglich.
Die Funktion
hat offenbar einige sehr interessante Eigenschaften, die
weiterer Untersuchungen bedürfen. Auf einige Aspekte soll hingewiesen werden.
1. Die Punkte
mit
,
Primzahl, approximieren für
eine Gerade der Steigung
. Analog
bilden die Punkte
mit
,
Primzahlen, für
einen Strahl der Steigung
. Für
geht der Anstieg der
zugeordneten Strahlen gegen 4, wie in Bild 5 zu sehen ist.
Bild 5: Graph von |
Bild 6: Graph von |
2. Der Graph von
für
,
Primzahlen, kann auf die soeben erklärte
Strahlenstruktur zurückgeführt werden: Wenn
folgt
, der Graph ist also eine
Überlagerung von vertikalen Streckungen des soeben erklärten Strahlenbündels
(vgl. Bild 6).
Auf analoge Weise läßt sich die Argumentation für
,
,
Primzahlen fortsetzen;
der Graph der Funktion wird von einer selbstähnlichen Struktur von
Strahlenbündeln bestimmt.
> 3. Man könnte nun erwarten, daß
im wesentlichen linear wächst in dem Sinne, daß es
einen durchschnittlichen Anstieg
gibt mit
![]() |
(19) |
Eine grobe Argumentation benutzt folgendes: Die Wahrscheinlichkeit dafür,
daß zwei zufällig gewählte Zahlen relativ prim sind, ist
(vgl. [1]). Damit ist
die Wahrscheinlichkeit dafür, daß der größte gemeinsame Teiler zweier zufällig
gewählter Zahlen gleich einer natürlichen Zahl
ist, gleich
. Man kann nun
abschätzen:
|
![]() | (20) | (21) |
Für eine weitere Untersuchung der Funktion
bieten sich folgende
Ausgangspunkte:
|
|
|
![]() |
(21) |
Neben dem Mittelwert ist auch die Standardwabeichung von
zu
untersuchen.
|
|
| [1] |
D. E. Knuth. The Art of Computer Programming. Vol. 2, Seminumerical
Algorithms. Reading, ... 1997 |
| [2] |
Solutions of elementary problems. American Mathematical Monthly June-July 1981, pp. 444-445 |