MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

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

math

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)

math

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

math

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)

math

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)

math

Halbesumme1:=Summe1/2

math

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:

math

math

math

math

math

math

math

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)

math

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)

math

Die Summe wird gebildet.

 

delete(n):

Summe_der_Teiler:=sum(Teiler[n],n=1..Anzahl_Teiler)

math

Im letzten Schritt wird die Anzahl der Teiler durch zwei dividiert und das Ergebnis mit

der Probezahl verglichen.

 

testeq(Summe_der_Teiler/2=Probezahl)

math

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.

 

______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.