Java :: Aufgabe #8 :: Lösung #4
6 Lösungen

#8
Euklidischer Algorithmus
Anfänger - Java
von Jurom
- 23.10.2012 um 11:49 Uhr
Erstellen Sie ein Programm, das den größten gemeinsamen Teiler zweier natürlicher Zahlen zurückgibt.
Benutzen Sie hierzu den euklidischen Algorithmus; sowohl den klassischen, als auch den modernen.
Geben Sie zum Vergleich beide Lösungen aus.
Auf ein Exception-Handling kann verzichtet werden.
Beispiele zum Lösungslayout sind beigefügt.
Benutzen Sie hierzu den euklidischen Algorithmus; sowohl den klassischen, als auch den modernen.
Geben Sie zum Vergleich beide Lösungen aus.
Auf ein Exception-Handling kann verzichtet werden.
Beispiele zum Lösungslayout sind beigefügt.
#4

von HaraldK (260 Punkte)
- 22.02.2016 um 20:33 Uhr
Die Lösung beinhaltet jedoch nur die moderne Variante.
Java-Code
Ausgabe:

/* @Author H.K. * @Date 22.02.2016 * * Programmbeschreibung: * Ermittlung des größten gemeinsamen Teiler durch den modernen Euklidischen Algorithmus */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class mainprogram { public static void main ( String args[] ) throws IOException { System.out.println("--- Euklidischer Algorithmus ---"); System.out.println("--- Es werden zwei Ganze Zahlen abgefragt und der ggT von diesen ermittelt ---\n\n"); int zahl = 0; int ggT = 0; int a = 0; int b = 0; a = zahlenabfrage(zahl, a); zahl = 0; b = zahlenabfrage(zahl, a); ggT = ggT(a, b, ggT); } public static int zahlenabfrage(int zahl, int a) throws IOException { while (zahl == 0) { if (a == 0) { System.out.println("Bitte die erste Ganze Zahl eingeben: "); } else { System.out.println("Bitte die zweite Ganze Zahl eingeben: "); } BufferedReader input = new BufferedReader ( new InputStreamReader ( System.in ) ); String inputString = input.readLine(); if (inputString.matches("-?\\d+?")) { zahl = Integer.parseInt(inputString); } else { System.out.println("Eingabe ist keine Zahl!"); } } return zahl; } public static int ggT(int a, int b, int ggT) { int largernumber = 0; int smallernumber = 0; int rest = 1; int calcrest = rest; if (a > b) { largernumber = a; smallernumber = b; } else { largernumber = b; smallernumber = a; } while (rest != 0) { rest = largernumber%smallernumber; if (rest == 0) { System.out.println("Der ggT ist: " +calcrest); } else { calcrest = rest; largernumber = smallernumber; smallernumber = rest; } } return ggT; } }
Ausgabe:
Konsolenausgabe:
--- Euklidischer Algorithmus ---
--- Es werden zwei Ganze Zahlen abgefragt und der ggT von diesen ermittelt ---
Bitte die erste Ganze Zahl eingeben:
50250
Bitte die zweite Ganze Zahl eingeben:
80750
Der ggT ist: 250
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1