SJ 21/22: Klasse 9d: Unterschied zwischen den Versionen
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 130: | Zeile 130: | ||
... immer noch unter einer Sekunde! | ... immer noch unter einer Sekunde! | ||
+ | |||
+ | //Teiler ermitteln | ||
+ | //Wir berechnen immer sofort kleine Teiler und Gegenteiler | ||
+ | x=91747111730317; | ||
+ | |||
+ | //Berechne den größtmöglichen kleinen Teiler | ||
+ | obergrenze=Math.floor(Math.sqrt(x)); | ||
+ | UI.log(obergrenze); | ||
+ | |||
+ | //Schleife: Test aller Teiler von x | ||
+ | teiler=1; | ||
+ | while(teiler<=obergrenze) { | ||
+ | if(x%teiler==0) UI.log(x+" = "+teiler+" * "+ x/teiler); | ||
+ | teiler=teiler+1; | ||
+ | } | ||
+ | |||
+ | Was passiert, wenn man den if-Operator in der 3.-letzten Zeile weglässt? | ||
+ | |||
+ | ==RUBIK== | ||
+ | * Hausi: erste Ebene | ||
+ | do { | ||
+ | await CUBE.move("R D L M"); | ||
+ | } while (!CUBE.isSolved()) |
Aktuelle Version vom 27. Mai 2022, 10:02 Uhr
Spanisch-Zweig (einstündig - IT Wahlpflichtfächergruppe IIIa)
Bezeichnung in der SchulApp: IT_1/9d_s
>>> zurück zur Klassenübersicht
Inhaltsverzeichnis
Ausgewählte Themenblöcke
- Themenblock: TXT1: Der tabellarische Lebenslauf
- Projektarbeit: BODY-Painting - Johannes Stöttner
- Leitfach Deutsch: Elisabeth Leidl
Blog
Projekt
- Email: https://web.de/ Account: 9ddmrs@web.de Passwort: 9ddmrs-endedesschreckens-schlussstrich
- Abdobe Express: https://www.adobe.com/de/express/ Account: 9ddmrs@web.de Passwort: Mrs-endedesschreckens-schlussstrich
- Projektbewertungen: Media: Projektbewertungen9d.odt
Themenblock: CUBE.CODES (Programmierung)
- Erste Schritte: UI.log
- CUBE.CODES: Einfache EVA-Programme
- 13. Januar 2022:
Fahrenheit=1000; UI.log((Fahrenheit-32)/1.8);
Hausi: Bei welcher Temparatur in US kocht das Wasser? Ein Programm für die Umkehrfunktion schreiben: Celsius >> Fahrenheit
//Teiler ermitteln x=3000; teiler=1; while(teiler<=x) { if(x%teiler==0) UI.log(teiler); teiler=teiler+1; } UI.log("bye bye!");
[08:24:31] Program starting ... [08:24:32] Program running ... 1 43 1181 50783 59077 2540311 69769937 3000107291 bye bye! [08:25:13] Program finished successfully
Unsere größte Primzahl der Stunde war:
//Teiler ermitteln x=917471; teiler=1; while(teiler<=x) { if(x%teiler==0) UI.log(teiler); teiler=teiler+1; } UI.log("bye bye!");
>>> CUBE.CODES blank
Gegenteilertrick: 400: 1 2 4 5 8 10 16 20 || 20 25 40 50 80 100 200 400 Wir wollen mit diesem Trick unseren Algorithmus beschleunigen ...
//Teiler ermitteln x=9174711173; teiler=1; while(teiler<=x) { if(x%teiler==0) UI.log(teiler); teiler=teiler+1; } UI.log("bye bye!");
... dauert fast 5 Minuten:
[11:04:54] Program running ... 1 21991 417203 9174711173 bye bye! [11:08:29] Program finished successfully
... aber fast 100% der Rechenzeit "verplempern wir" mit Rechnungen jenseits des nötigen (wenn wir bei Wurzel von 9174711173 aufhörenwürden)!
Und so rechnen wir eben nur noch < 1 Minute :-)
//Teiler ermitteln x=9174711173; obergrenze=Math.floor(Math.sqrt(x)); UI.log(obergrenze); teiler=1; while(teiler<=obergrenze) { if(x%teiler==0) UI.log(x+" = "+teiler+" * "+ x/teiler); teiler=teiler+1; } UI.log("bye bye!");
[11:03:22] Program starting ... [11:03:23] Program running ... 95784 9174711173 = 1 * 9174711173 9174711173 = 21991 * 417203 bye bye! [11:03:23] Program finished successfully
Oder noch extremer: 10.000 so groß (so lange) ergibt 5min * 10.000 ist ungefähr einige Wochen ...
//Teiler ermitteln x=91747111730317; obergrenze=Math.floor(Math.sqrt(x)); UI.log(obergrenze); teiler=1; while(teiler<=obergrenze) { if(x%teiler==0) UI.log(x+" = "+teiler+" * "+ x/teiler); teiler=teiler+1; } UI.log("bye bye!");
[10:56:37] Program starting ... [10:56:38] Program running ... 9578471 91747111730317 = 1 * 91747111730317 91747111730317 = 181 * 506890120057 bye bye!
... immer noch unter einer Sekunde!
//Teiler ermitteln //Wir berechnen immer sofort kleine Teiler und Gegenteiler x=91747111730317;
//Berechne den größtmöglichen kleinen Teiler obergrenze=Math.floor(Math.sqrt(x)); UI.log(obergrenze);
//Schleife: Test aller Teiler von x teiler=1; while(teiler<=obergrenze) { if(x%teiler==0) UI.log(x+" = "+teiler+" * "+ x/teiler); teiler=teiler+1; }
Was passiert, wenn man den if-Operator in der 3.-letzten Zeile weglässt?
RUBIK
- Hausi: erste Ebene
do { await CUBE.move("R D L M"); } while (!CUBE.isSolved())