CUBE.CODES: Beispiele aus der Zahlentheorie (Klasse 5): Unterschied zwischen den Versionen

Aus MINT.lentner.net
Zur Navigation springen Zur Suche springen
Zeile 5: Zeile 5:
 
Ein einfaches, aber mächtiges Sprachelement jeder Programmiersprache ist die '''Wiederholungsschleife'''. Damit lassen wir die Möglichkeiten von Taschenrechner und Tabellenkalkulation weit hinter uns. Schon kleine Aufgaben aus der 5. Klasse werden schnell zu unlösbaren Problemen, wenn die Zahlen etwas größer werden. Die Berechnung der Teilermenge von 12 lässt sich zum Beispiel ganz problemlos durchführen: '''Wir teilen einfach die 12 durch alle möglichen Teiler (von 1 bis 12) und schauen eben, ob die Quotienten Ganzzahlen oder Kommazahlen sind''' oder '''wir wenden 12 Teilbarkeitsregeln an'''. Eigentlich easy!
 
Ein einfaches, aber mächtiges Sprachelement jeder Programmiersprache ist die '''Wiederholungsschleife'''. Damit lassen wir die Möglichkeiten von Taschenrechner und Tabellenkalkulation weit hinter uns. Schon kleine Aufgaben aus der 5. Klasse werden schnell zu unlösbaren Problemen, wenn die Zahlen etwas größer werden. Die Berechnung der Teilermenge von 12 lässt sich zum Beispiel ganz problemlos durchführen: '''Wir teilen einfach die 12 durch alle möglichen Teiler (von 1 bis 12) und schauen eben, ob die Quotienten Ganzzahlen oder Kommazahlen sind''' oder '''wir wenden 12 Teilbarkeitsregeln an'''. Eigentlich easy!
  
Interessiert uns aber die Teilermenge von 5.000, dann sind es schon '''5.000 Rechnungen'''. Interessiert uns eine Übersichtsliste über alle Teilermengen von 1 bis 5000, dann sind es '''5.000*5.000 = 25 Mio Rechnungen''' und die Klärung der Frage wird auf einmal zur Wochenarbeit.  
+
Interessiert uns aber die Teilermenge von 5.000, dann sind es schon '''5.000 Rechnungen'''. Interessiert uns eine Übersichtsliste über alle Teilermengen von 1 bis 5000, dann sind es im Schnitt schon '''2.500*5.000, also ca. 12 Mio Rechnungen''' und die Klärung der Frage wird auf einmal zur Wochenarbeit.  
  
 
In JavaScript können wir Aufgaben einfach mit Variablen formulieren und beliebig oft wiederholen lassen:  
 
In JavaScript können wir Aufgaben einfach mit Variablen formulieren und beliebig oft wiederholen lassen:  

Version vom 22. April 2021, 07:09 Uhr

Einfache Schleifen: Vielfachenmenge und Teilermenge

CUBE.CODES - Erste Schritte

Ein einfaches, aber mächtiges Sprachelement jeder Programmiersprache ist die Wiederholungsschleife. Damit lassen wir die Möglichkeiten von Taschenrechner und Tabellenkalkulation weit hinter uns. Schon kleine Aufgaben aus der 5. Klasse werden schnell zu unlösbaren Problemen, wenn die Zahlen etwas größer werden. Die Berechnung der Teilermenge von 12 lässt sich zum Beispiel ganz problemlos durchführen: Wir teilen einfach die 12 durch alle möglichen Teiler (von 1 bis 12) und schauen eben, ob die Quotienten Ganzzahlen oder Kommazahlen sind oder wir wenden 12 Teilbarkeitsregeln an. Eigentlich easy!

Interessiert uns aber die Teilermenge von 5.000, dann sind es schon 5.000 Rechnungen. Interessiert uns eine Übersichtsliste über alle Teilermengen von 1 bis 5000, dann sind es im Schnitt schon 2.500*5.000, also ca. 12 Mio Rechnungen und die Klärung der Frage wird auf einmal zur Wochenarbeit.

In JavaScript können wir Aufgaben einfach mit Variablen formulieren und beliebig oft wiederholen lassen:

Zahl=12;
Teiler=1;
while(Teiler<=Zahl) { UI.log("Zahl: " + Zahl + ", Teiler: " + Teiler + ", Quotient: " + (Zahl/Teiler)); Teiler=Teiler+1; }

In weniger als einer Sekunde erhalten wir das Ergebnis:

[23:24:04] Program starting ...
[23:24:05] Program running ...
Zahl: 12, Teiler: 1, Quotient: 12
Zahl: 12, Teiler: 2, Quotient: 6
Zahl: 12, Teiler: 3, Quotient: 4
Zahl: 12, Teiler: 4, Quotient: 3
Zahl: 12, Teiler: 5, Quotient: 2.4
Zahl: 12, Teiler: 6, Quotient: 2
Zahl: 12, Teiler: 7, Quotient: 1.7142857142857142
Zahl: 12, Teiler: 8, Quotient: 1.5
Zahl: 12, Teiler: 9, Quotient: 1.3333333333333333
Zahl: 12, Teiler: 10, Quotient: 1.2
Zahl: 12, Teiler: 11, Quotient: 1.0909090909090908
Zahl: 12, Teiler: 12, Quotient: 1
[23:24:05] Program finished successfully

Wir müssen die Teiler mit ganzzahligen Quotienten nur ablesen und haben unsere Teilermenge. Da der PC bei der sturen Wiederholung von Rechenschritten recht schmerzfrei ist, stört es kein bisschen, die Zuordnung Zahl=12; durch Zahl=5000; zu ersetzen und in weniger als einer Sekunde haben wir die Teiler von 5000!

Eine klitzekleine Formulierung mit if ermöglicht es die unwichtigen Ergebnisse (mit Kommazahlen als Quotienten) einfach wegzulassen und schon haben wir nur die Teiler auf dem Schirm:

Zahl=12;
Teiler=1;
while(Teiler<=Zahl) { if(Zahl%Teiler==0) UI.log("Zahl: " + Zahl + ", Teiler: " + Teiler + ", Quotient: " + (Zahl/Teiler)); Teiler=Teiler+1; }

Das Ergebnis ist jetzt deutlich schöner lesbar:

[23:24:04] Program starting ...
[23:24:05] Program running ...
Zahl: 12, Teiler: 1, Quotient: 12
Zahl: 12, Teiler: 2, Quotient: 6
Zahl: 12, Teiler: 3, Quotient: 4
Zahl: 12, Teiler: 4, Quotient: 3
Zahl: 12, Teiler: 6, Quotient: 2
Zahl: 12, Teiler: 12, Quotient: 1
[23:24:05] Program finished successfully

Die Möglichkeiten des menschlichen Rechnens kommen an ihre Grenzen: Primzahlen