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
