Vollkommene Zahlen

Hier bin ich auf vollkommene Zahlen gestoßen: http://youtu.be/bk_Kjpl2AaA

Hier habe ich nachgelesen: http://de.wikipedia.org/wiki/Vollkommene_Zahl

Dieses Programm werden wir brauchen:

for a:1 thru 10000 do block(
T[a]:[],
for i:1 thru a do if mod(a,i)=0 then T[a]:append(T[a],[i]),
n:length(T[a]),
if sum(T[a][i],i,1,n-1)=T[a][n] then disp(a,"ist eine 
vollkommene Zahl","")
);

Maxima Onlinehttp://maxima-online.org/?inc=r-341553497

Mit verbesserter Ausgabehttp://maxima-online.org/?inc=r-820343253

Ein Kryptogramm lösen

Gegebenes Kryptogramm:

EINS + EINS = ZWEI

Wenn man die Buchstaben durch passende Ziffern ersetzt, erhält man eine richtige Rechnung. Verschiedene Buchstaben müssen verschiedene Ziffern sein.

Quelle: http://de.wikipedia.org/wiki/Kryptogramm

Programmcode:

for e:0 thru 9 do
for i:0 thru 9 do
for n:0 thru 9 do
for s:0 thru 9 do
for w:0 thru 9 do
for z:0 thru 9 do
block(
ev(Buchstaben:[e,i,n,s,w,z]),
if 2*(1000*e+100*i+10*n+s)=1000*z+100*w+10*e+i then
if cardinality(setify(Buchstaben))= length(Buchstaben) then
print(Buchstaben)
);

Man beachte, dass die Verwendung der Mächtigkeit einer Menge (cardinality) hier vorteilhaft verwendet werden konnte,.

Maxima Online: http://maxima-online.org/?inc=r1496736207
mit Ausgabe von EINS und ZWEI: http://maxima-online.org/?inc=r-792513137

Zur Funktionsweise des Programms siehe: https://casmaxima.wordpress.com/2014/04/02/ein-spanisches-online-maxima/

 

Ziffernsumme einer dreistelligen Zahl

Eine Aufgabenstellung bei www.edhelper.com lautete in deutscher Übersetzung:
(g1) Die Ziffernsumme einer dreistelligen Zahl ist 18
(g2) Die Hunderterstelle ist um 6 größer als das 2fache der Zehnerstelle
(g3) Die Einerstelle ist um 6 größer als das 3fache der Zehnerstelle
Die dreistellige Zahl ist gesucht.

Programmcode:

g1:H+Z+E=18;
g2:H-6=2*Z;
g3:E-6=3*Z;
l:solve([g1,g2,g3],[H,Z,E]);
Zahl:100*H+10*Z+E,l;

Ausführung mit Maxima Online: http://maxima-online.org/?inc=r-144388483

Übungsauftrag:

Zweiergruppen:
Formuliere derartige Aufgabenstellungen für frei gewählte dreistellige Zahlen (mit unterschiedlichen Ziffern).
Das andere Gruppenmitglied soll deine Aufgabenstellungen lösen.

Aufgabe für Fortgeschrittene:

Auch ohne Computer ist nicht schwer, herauszufinden, wie viele dreistellige Zahlen es gibt. Mit Computer ist es auch interessant: http://maxima-online.org/?inc=r-673670430 . Aber, wie viele dreistellige Zahlen mit unterschiedlichen Ziffern gibt es? Die Kombinatorik liefert schnell eine Antwort.
Ich hätte gerne, dass der Computer diese Zahlen aufschreibt.

Der Programmcode dazu:

H:setify(makelist(i,i,1,9));
Z:setify(makelist(i,i,0,9));
E:Z;
zahlenmenge:cartesian_product(H,Z,E);
zahlenliste:listify(zahlenmenge);
verschiedene_ziffern:sublist(zahlenliste,lambda([x],
cardinality(setify(x))=3));
length(verschiedene_ziffern);

Anmerkung: cardinality(M) ist die Mächtigkeit der Menge M. Die Mächtigkeit einer Menge, ist die Anzahl ihrer Elemente. Die Zahl 199 als Liste ist [1,9,9]. Wenn man die Liste zu einer Menge verwandelt, erhält man {1,9}. Da eine Menge eine Zusammenfassung von wohlunterschieden Objekten unserer Anschauung oder unseres Denkens ist, dürfen keine Ziffern mehrfach vorkommen. Die Umwandlung einer Liste x in eine Menge erfolgt mit setify(x).  Die lambda-Funktion berücksichtigt in der Teilliste (sublist) also nur dreistellige Zahlen mit lauter verschiedenen Ziffern.Liste_in_Menge_1

Ausführung mit Maxima Online: http://maxima-online.org/?inc=r-1271358832

Es geht natürlich auch ohne Maxima:

Matthias Praunegger von http://www.d4e.at hat mir dieses Programm (mit einem anderen Algorithmus) geschickt:

matthias