ggT - Pohlig.de

Werbung
© 2006 Pohlig
Bestimmung des ggT zweier Zahlen
Bestimmung nach Definition –
Implementierung
Euklidscher Algorithmus – Implementierung
Aufwand – Effizienz von Algorithmen
Erweiterung der Klasse Mathematik
die Methode ggt(int a, int b)
Informatikkurs mit Java
1
© 2006 Pohlig
Übung Nr. 1 (Aufgabenblatt)
Lösung: Variante 1
Konsolen-Eingabe der
Zahlen, deren ggT
bestimmt werden soll.
import info1.*;
public class GgT1{
public static void main(String[] args){
Teilt i a und b
int ggT = 1;
restlos, so kommt i
System.out.print("erste Zahl: ");
als ggT in Frage. Der
int a = Console.in.readInt();
letzte i-Wert ist der
System.out.print("zweite Zahl: ");
gesuchte ggT. Er
wird am Schluss
int b = Console.in.readInt();
for (int i = 1; i <= Math.min(a,b); i++){ausgegeben.
if ((a%i==0)&&(b%i==0))
ggT = i;
Prüft mit der 1
}
beginnend, ob i die
System.out.println(ggT);
Zahlen a und b restlos
}
teilt. Ende bei der
}
Kleineren der beiden.
Informatikkurs mit Java
2
© 2006 Pohlig
Test
Geben Sie für a den Wert 162019746
und für
B den Wert 115720390 ein
Es dauert eine geraume Zeit, bis das
Ergebnis erscheint.
Wir bauen in unser Programm eine Stoppuhr ein, die die Zeit stoppt,
die zur Durchführung des Algorithmus‘ benötigt wird.
Wir benutzen dazu ein Objekt der Klasse StoppUhr. Benutze deren
Methoden starten() und stoppen().
Wenn das Objekt eineStoppuhr heißt. Lässt sich gestoppte Zeit mit
System.out.println(eineStoppUhr) auf dem Bildschirm ausgeben.
Informatikkurs mit Java
3
© 2006 Pohlig
Variante 2
StoppUhr eineStoppUhr = new StoppUhr();
…
eineStoppUhr.starten();
for (int i = 1; i <= Math.min(a,b); i++){
if ((a%i==0)&&(b%i==0))
ggT = i;
}
eineStoppUhr.stoppen();
System.out.println(ggT);
System.out.println(eineStoppUhr);
Starten und
Stoppen der
StoppUhr
Ausgabe der
gestoppten Zeit
Deklarartion und
Erzeugen eines
StoppUhr-Objekts
Informatikkurs mit Java
4
© 2006 Pohlig
Effizienz prüfen
Informatikkurs mit Java
5
© 2006 Pohlig
Euklid
Lebensdaten: ca. 365 – ca. 300
Möglicherweise verbirgt sich hinter dem Namen
Euklid mehrere Personen.
13 Bücher zu den Elementen zusammengefasst.
Axiomatischer Aufbau der Mathematik.
Formulierung von Algorithmen und deren Beweise
Informatikkurs mit Java
6
© 2006 Pohlig
Raffael (1483-1520: Die Schule von Athen, Vatikanische Museen)
Raffael
Euklid unterrichtet seine
Schüler. Als Vorlage für
Euklid diente Raffel das
Portrait von Bramante,
einem der Bauleiter des
Peterdomes in Rom
Informatikkurs mit Java
7
© 2006 Pohlig
Der verbesserte Euklidsche Algorithmus
Gesucht ggT(792,75) =3
792 = 10 . 75 + 42
75 = 1 . 42 + 33
42 = 1 . 33 + 9
33 = 3
.
9 +6
9 = 1 .6
+3
6= 2.3
+0
eineStoppUhr.starten();
int r;
do{
r = a%b;
a = b;
b = r;
} while(b!=0);
a b r
Informatikkurs mit Java
8
© 2006 Pohlig
Effizienz prüfen
Informatikkurs mit Java
9
© 2006 Pohlig
Effiziente Methode in die Klasse Mathematik übernehmen
public static int ggT(int a, int b){
int ggT = 1;
int r;
do{
r=
a%b;info1.*;
import
a=
b;
public
class GgTTest {
b = r;
} while(b!=0);
public static void main (String[] args) {
return a;
System.out.print("1. Zahl: ");
int a = Console.in.readInt();
}
System.out.print("2. Zahl: ");
int b = Console.in.readInt();
System.out.println("der ggT("+a+","+b+") ist: "+
Mathematik.ggT(a,b));
}
}
Informatikkurs mit Java
10
Herunterladen