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

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.
#1
vote_ok
von Jurom (1070 Punkte) - 23.10.2012 um 16:12 Uhr
Quellcode ausblenden Java-Code
//©2012 by Julius J. Hoffmann
//written with Eclipse

import java.util.*;		//Importiert Scanner zum Einlesen der Eingabe

public class Euklid {		//die "ausführende" Klasse

	static int old(int a, int b)		//Methode zur Berechnung des klass. Algorithmus
	{									//mit Übergabe  von 2 int-Variablen
		if (a==0) return b;				//Bedingung: a = 0 -> Rückgabe b; Ende der Methode
		while (b!=0)					//Initiierung einer while-Schleife mit b nicht 0 als Bedingung
		{
			if (a > b) a = a-b;			//Subtraktion der kleinern von der kleineren Zahl, wenn a größer
			else b = b-a;				//wenn b kleiner, iterative Berechnung
		}
		return a;						//Rückgabe a (wenn b = 0)
	}
	
	static int modern (int a, int b)	//Methode zur Berechnung des modernen Algorithmus
	{
		if (b==0) return a;				//wenn b = 0, Rückgabe a; Ende der Methode
		return modern(b, a%b); 			//rekursiver Aufruf der Funktion, mit b, Rest von a/b
	}
	
	public static void main(String[] args) 							//main-Methode
	{
		Scanner s = new Scanner(System.in);							//Anlegen des Scanner-Objektes
		System.out.print("Geben Sie die 1. natürliche Zahl an: ");	//Ausgabe des Strings
		int x = s.nextInt();										//Einlesen der Benutzereingabe
		System.out.print("Geben Sie die 2. natürliche Zahl an: ");	//Ausgabe des Strings
		int y = s.nextInt();										//Einlesen der Benutzereingabe
		System.out.println("alter Euklid: " + old(x,y));			//Ausgabe String, Aufruf von old()
		System.out.print("moderner Euklid: " + modern(x,y));		//Ausgabe String, Aufruf von modern
	}

}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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

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.