Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

10
Informatik Kurse 11-13 1 © 2004 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)

description

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). Konsolen-Eingabe der Zahlen, deren ggT bestimmt werden soll. - PowerPoint PPT Presentation

Transcript of Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Page 1: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 1

© 2004 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)

Page 2: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 2

© 2004 Pohlig

Übung Nr. 1 (Aufgabenblatt)

import info1.*;public class GgT1{ public static void main(String[] args){ int ggT = 1; System.out.print("erste Zahl: "); int a = Console.in.readInt(); System.out.print("zweite Zahl: "); int b = Console.in.readInt(); for (int i = 1; i <= Math.min(a,b); i++){ if ((a%i==0)&&(b%i==0)) ggT = i; } System.out.println(ggT); }}

Lösung: Variante 1 Konsolen-Eingabe der Zahlen, deren ggT bestimmt werden soll.

Prüft mit der 1 beginnend, ob i die Zahlen a und b restlos teilt. Ende bei der Kleineren der beiden.

Teilt i a und b restlos, so kommt i als ggT in Frage. Der letzte i-Wert ist der gesuchte ggT. Er wird am Schluss ausgegeben.

Page 3: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 3

© 2004 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.

Page 4: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 4

© 2004 Pohlig

Variante 2

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

StoppUhr eineStoppUhr = new StoppUhr();…

Deklarartion und Erzeugen eines StoppUhr-Objekts

Page 5: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 5

© 2004 Pohlig

Effizienz prüfen

Page 6: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 6

© 2004 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

Page 7: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 7

© 2004 Pohlig

Raffael Raffael (1483-1520: Die Schule von Athen, Vatikanische Museen)

Euklid unterrichtet seine Schüler. Als Vorlage für Euklid diente Raffel das Portrait von Bramante, einem der Bauleiter des Peterdomes in Rom

Page 8: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 8

© 2004 Pohlig

Der erweiterte Euklidsche Algorithmus

Gesucht ggT(792,75)

792 = 75 +10 . 42

2 . + 0

75 = 42 1 . + 33

42 = 33 1 . + 9

33 = 9 3 . + 6

9 = 6 1 . + 3

6 = 3

=3 eineStoppUhr.starten(); int r; do{ r = a%b; a = b; b = r; } while(b!=0);a b r

Page 9: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 9

© 2004 Pohlig

Effizienz prüfen

Page 10: Bestimmung des ggT zweier Zahlen Bestimmung nach Definition –Implementierung

Informatik Kurse 11-13 10

© 2004 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;       a = b;       b = r;    } while(b!=0);    return a;}

import info1.*; public class GgTTest {    public static void main (String[] args) {      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));   } }