SJ 21/22: Klasse 9d: Unterschied zwischen den Versionen

Aus MINT.lentner.net
Zur Navigation springen Zur Suche springen
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 51: Zeile 51:
 
  bye bye!
 
  bye bye!
 
  [08:25:13] Program finished successfully
 
  [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!");
 +
 +
>>> [https://ide.cube.codes CUBE.CODES blank]<br>
 +
 +
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())

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

Ausgewählte Themenblöcke

Blog

Projekt

Themenblock: CUBE.CODES (Programmierung)

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())