________________________________________________________________________________
Inhalt....: Vollkommene Zahlen 1
Kategorie.: Unterrichtsmaterial
Mathematik: Zahlentheorie
MuPAD.....: 3.1.0
Datum.....: 2006-10-24
Autoren...: August Barkhausen <abarkhausen@gmx.de>
Funktionen: for, min, sum, nops, numlib::primedivisors, testeq
________________________________________________________________________________
Konstruktion von vollkommenen Zahlen und
Test von Zahlen auf Vollkommenheit
Im folgenden wird ein Algorithmus zur Berechnung von geraden vollkommenen
Zahlen durchgeführt, der auf die in dem Buch "Elementare Zahlentheorie" von
Remmert und Ulrich, 2. Auflage Birkhäuser1995" angegebene Charakterisierung
gerader vollkommener Zahlen zurückgeht. Die Formulierung der Charakterisierung
der vollkommenen geraden Zahlen ist dem Buch von Remmert und Ulrich (S. 37)
entnommen.
Mathematische Voraussetzungen sind neben Grundkenntnissen über elementare
Rechenregeln für reelle Zahlen und Primzahlen Programmierkenntnisse. Für die
Datenspeicherung werden Matrizen benutzt. Anderseits werden keine Grund-
kenntnisse über Rechenregeln für Matrizen benötigt. Eine Kurzeinführung über
die Definition von Matrizen und die Identifikation einzelner Elemente einer Matrix
reicht hier aus. Schließlich wird alternativ auch der Befehl print für die Datenaus-
gabe benutzt.
Aus mathematischer Sicht wesentliche Aspekte des Notebooks sind:
- Umgang mit Algorithmen
- Überprüfung mathematischer Voraussetzungen
- Anwendung von Beweistechniken
- Wiederholung bekannter mathematischer Begriffe
- Kennenlernen neuer mathematischer Begriffe
Aus programmiertechnischer Sicht wesentliche Aspekte des Notebooks sind:
- Programmiertechniken in MuPAD
- Datenein- und Ausgabe in MuPAD
Vollkommene Zahlen sind natürliche Zahlen, bei denen die Summe der Teiler doppelt so
groß ist, wie die Zahl selbst.
Beispiele:
Die Teiler von 6 sind 1, 2, 3 und 6. Für die Summe gilt: 1+2+3+6 = 12. Andererseits ist
12: 2 = 6. Die Zahl 6 ist damit vollkommen. Die Teiler von 28 sind 1, 2, 4, 7, 14 und 28.
Für die Summe gilt: 1 + 2 + 4 + 7 + 14 = 28 und andererseits 28:2 = 14. Die Zahl 28 ist
damit vollkommen. Die Eigenschaft einer Zahl, vollkommen zu sein, ist nicht selbstver-
ständlich: Die Teiler von 12 beispielsweise sind 1, 2, 3, 4, 6, 12. Deren Summe ist 28 und
die Hälfte von 28 ist 14. Die Zahl 12 ist damit nicht vollkommen.
Ob es ungerade vollkommene Zahlen gibt, ist nicht bekannt. Bekannt ist jedoch, dass es
keine ungeraden vollkommenen Zahlen a mit a < 10^50 gibt. (10 hoch 50).
Andererseits lassen sich alle geraden vollkommenen Zahlen angeben. Charakterisierung
der geraden vollkommenen Zahlen: Für eine natürliche gerade Zahl a = 2^(s-1)*b mit
s >=2, b ungerade sind äquivalent:
1) a ist vollkommen
2) b ist Primzahl und es gilt: b = 2^s-1
Das Notebook selbst setzt sich aus drei Teilen zusammen.
1) Konstruktion einer vollkommen Zahl in Einzelschritten
2) Anwendung des Algorithmus auf die iterative Konstruktion vollkommener Zahlen
3) Überprüfung vollkommener Zahlen anhand der Definition
1. Teil
Konstruktion vollkommener Zahlen in Einzelschritten am Beispiel der vollkommem Zahl 6.
Es wird die Notation aus dem oben angegebenen Satz benutzt und der Algorithmus für
s = 2 durchgeführt.
s:=2:
b:=2^s-1
![]()
Vorausgesetzt wurde, dass b Primzahl sein soll. Für b = 3 ist dies ohne weitere Rechnung
bekannt. In anderen Fällen kann dies jedoch nicht ohne weiteres vorausgesetzt werden.
Wenn eine Zahl b Primzahl ist, hat sie automatisch nur einen Primteiler. Die Anzahl der
Teilteiler wird mit dem Befehl nops ermittelt.
Testergebnis:=testeq(nops(numlib::primedivisors(b))=1)
![]()
Bei dem Resultat TRUE ist b Primzahl, sonst nicht. Ist b Primzahl liefert der nächste
Schritt die vollkommene Zahl a. Ist b keine Primzahl ist die Zahl a unvollkommen, da
der Algorithmus alle geraden vollkommenen Zahlen charakterisiert.
if Testergebnis = TRUE
then
a:=2^(s-1)*b:
print(Typeset,
"Vollkommene Zahl : ".a);
else
print(Typeset,"unvollkommene Zahl : ".a);
end_if
![]()
Um andere vollkommene Zahlen zu erhalten ist oben ein anderer Wert für s zu wählen.
Wenn allerdings b keine Primzahl ist, ist die resultierende Zahl a nicht vollkommen.
Eine Probe auf Vollkommenheit ist aufgrund des oben angegebenen Satzes nicht nötig,
wenn die Voraussetzungen des Satzes sichergestellt sind. Andererseits sollen hier die Befehle
für eine Überprüfung in Einzelschritten bereitgestellt werden.
Zunächst werden die Teiler von a festgestellt.
Teiler_von_a:=numlib::divisors(a)
![]()
Nun werden die Teiler summiert und die Summe wird durch 2 geteilt. Bei der Funktion
sum wurde vorausgesetzt, dass die Zahl der Teiler durch den Menschen abgelesen wird.
Summe1:=sum(Teiler_von_a[k],k=1..4)
![]()
Halbesumme1:=Summe1/2
![]()
Wünschenswert ist an dieser Stelle allerdings eine dynamischere Vorgehensweise.
MuPAD soll die Summation für beliebige Anzahl von Teilern korrekt durchführen.
2. Teil
Das oben angegebene Verfahren zur Konstruktion vollkommener Zahlen wird iterativ
durchgeführt. Die Variable Ende gibt die Anzahl der Iterationen an. Zunächst werden die
benötigten Variablen zurückgesetzt.
Ende:=27:
delete s:delete b: delete a:
Zahlnummer:=0:
for s from 2 to Ende do
b:=2^s-1;
Primzahltest:=testeq(nops(numlib::primedivisors(b))=1);
if Primzahltest = TRUE
then
a:=2^(s-1)*b;
Zahlnummer:=Zahlnummer+1;
print(Typeset,
"Vollkommene Zahl".expr2text(Zahlnummer).": ".a);
end_if;
end_for:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
3. Teil
Überprüfung auf Vollkommenheit anhand der Definition für beliebige natürliche Zahlen.
Die Probezahl ist die Zahl, die auf Vollkommenheit untersucht werden soll. Wenn man eine
andere als die angegebene Zahl untersuchen möchte, reicht es, die vorgebene Probezahl
durch eine andere zu ersetzen.
Probezahl := 8128:
In einem ersten Schritt werden die Teiler bestimmt.
Teiler:=numlib::divisors(Probezahl)
![]()
Nun werden die Teiler addiert. Für die Summation wird die Anzahl der Teiler benötigt.
Diese wird durch die Funktion nops geliefert.
Anzahl_Teiler:=nops(Teiler)
![]()
Die Summe wird gebildet.
delete(n):
Summe_der_Teiler:=sum(Teiler[n],n=1..Anzahl_Teiler)
![]()
Im letzten Schritt wird die Anzahl der Teiler durch zwei dividiert und das Ergebnis mit
der Probezahl verglichen.
testeq(Summe_der_Teiler/2=Probezahl)
![]()
Bei der Antwort TRUE ist die Probezahl vollkommen, sonst nicht. Im Unterschied zu
dem im zweiten Notebook zu vollkommenen Zahlen, erfasst die Überprüfung auf
Vollkommenheit sowohl gerade als auch ungerade Zahlen.
Offene Punkte und Anregungen:
1) Es sollte sichergestellt werden, dass die Voraussetzungen des Satzes
genauer abgesprüft werden. Insbesondere sollte sichergestellt werden, dass
die Zahl s tatsächlich nur aus der Menge der natürlichen Zahlen stammt.
2) Wenn es eine bessere Alternative zur Testmatrix gibt, sollte diese realisiert werden.
3) Die Ausgaben können mit dem Printbefehl aussagekräftiger dargestellt werden.
Beispielsweise kann eine Aussage "False" durch einen geeigneten Satz ersetzt werden.
4) Es ist als dritte Möglichkeit zur Überprüfung auf einer Zahl auf Vollkommenheit
möglich, die oben angegebene Formel zur Bestimmung einer geraden vollkommenen
Zahl nach b und s umzustellen und dann zu überprüfen, ob b eine Primzahl ist und s
eine natürliche Zahl >=2. Man sollte dabei die mathematischen Voraussetzungen und
Grenzen dieser Vorgehensweise überprüfen.
______________________________________________________________________________
Anmerkung:
1. Darstellungen des gewählten Algorithmus finden sich in vielen Büchern zur Zahlentheorie. Das vorliegende
Notebook bezieht sich auf die Darstellung in Remmert, Ulrich: "Elementare Zahlentheorie", 2. Auflage
Birkhäuser 1995.
2. Lösungen von Programmierproblemen im Rahmen der linearen Algebra und Analysis finden sich in weiteren
Notebooks des gleichen Autors.
3. In einem weiteren Notebook des Autors wird ein Algorithmus zur Berechnung von Primzahlen durchgeführt
und ausgewertet.
4. In einem weiteren Notebook des Autors wird eine weitere Möglichkeit zur Überprüfung einer Zahl auf
Vollkommenheit durchgeführt.
5. Weitere Aspekte der Anwendung von MuPAD auf die Zahlentheorie finden sich in zwei Notebooks des
gleichen Autors, die sich mit vollkommenen Zahlen beschäftigen.
6. Weitere Anregungen finden Sie in der Unterrichsmaterialsammlung unter schule.mupad.de. In diesen
Notebooks werden eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD Pro gelöst.
______________________________________________________________________________