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

6 Lösungen Lösungen öffentlich
#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.
#4
vote_ok
von HaraldK (260 Punkte) - 22.02.2016 um 20:33 Uhr
Die Lösung beinhaltet jedoch nur die moderne Variante.

Quellcode ausblenden Java-Code
/* @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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2116398

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.