CUBE.CODES: Beispiele aus der Zahlentheorie (Klasse 5): Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 31: | Zeile 31: | ||
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! | 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! | ||
− | * [https://ide.cube.codes/app/?init=loadFromUrl&url=https://share-repository.cube.codes/v1/appStates/c51ff0e7-497a-402d-9349-c527736ded0e Verbesserung: Unwichtige Ergebnisse bei der Ausgabe unterdrücken] | + | * '''Programm 2:''' >>> [https://ide.cube.codes/app/?init=loadFromUrl&url=https://share-repository.cube.codes/v1/appStates/c51ff0e7-497a-402d-9349-c527736ded0e Verbesserung: Unwichtige Ergebnisse bei der Ausgabe unterdrücken]<br> |
+ | 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: | ||
+ | |||
+ | <br> | ||
+ | Zahl=12; | ||
+ | Teiler=1;<br> | ||
+ | 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 | ||
+ | |||
* [https://ide.cube.codes/app/?init=loadFromUrl&url=https://share-repository.cube.codes/v1/appStates/790501be-4dbe-490e-8228-a6149c2cf956 Beobachtung: Die Quotienten sind auch Teiler (von unten nach oben gelesen)] | * [https://ide.cube.codes/app/?init=loadFromUrl&url=https://share-repository.cube.codes/v1/appStates/790501be-4dbe-490e-8228-a6149c2cf956 Beobachtung: Die Quotienten sind auch Teiler (von unten nach oben gelesen)] | ||
* [https://ide.cube.codes/app/?init=loadFromUrl&url=https://share-repository.cube.codes/v1/appStates/9fb74839-3c24-4467-8aa1-57f7370f9738 Verbesserung: Doppelte Ausgabe weglassen, Quotienten als Gegenteiler bezeichnen] | * [https://ide.cube.codes/app/?init=loadFromUrl&url=https://share-repository.cube.codes/v1/appStates/9fb74839-3c24-4467-8aa1-57f7370f9738 Verbesserung: Doppelte Ausgabe weglassen, Quotienten als Gegenteiler bezeichnen] |
Version vom 21. April 2021, 22:35 Uhr
Einfache Schleifen: Vielfachenmenge und Teilermenge
- Programm 1: >>> Erste Schleife: Teilercheckliste ausgeben
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." Eigentlich easy. Interessiert uns aber die Teilermenge von 5000 oder interessiert uns eine Übersicht über alle Teilermengen von 1 bis 5000, dann wird die Aufgabe 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!
- Programm 2: >>> Verbesserung: Unwichtige Ergebnisse bei der Ausgabe unterdrücken
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
- Beobachtung: Die Quotienten sind auch Teiler (von unten nach oben gelesen)
- Verbesserung: Doppelte Ausgabe weglassen, Quotienten als Gegenteiler bezeichnen
- Verbesserung: Anzahl der Teiler ausgebeben (Was ist mit Quadratzahlen?)
- Ganze Liste mit Zahlen und ihrer jeweiligen Teileranzahl