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