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