Größten Gemeinsamen Teilers Zweier Positiver Ganzer Zahlen in Java

Tech
Read Time - 4 mins

Java Logo

Größten Gemeinsamen Teilers Zweier Positiver Ganzer Zahlen in Java

Experimentieren Sie mit eclipse und dem Java-Compiler/-Interpreter (wie unten erläutert) und implementieren Sie dabei den Eukidischen Algorithmus http://de.wikipedia.org/wiki/Euklidischer_Algorithmus zur Bestimmung des größten gemeinsamen Teilers zweier positiver ganzer Zahlen in Java.

Erstellen Sie (ggf. in einem neuen eclipse-Projekt) ein Java-Programm GGT.java, welches (in Anlehnung an die Berechnung der Summe zweier Zahlen) den größten gemeinsamen Teiler von zwei positiven ganzen Zahlen nach dem Euklidischen Algorithmus berechnet und ausgibt. Das Prinzip des euklidischen Algorithmus wird auch gegenseitige Wechselwegnahme genannt. Eingangsgrößen seien zwei positive ganze Zahlen a und b. Bei der Berechnung verfährt man nach Euklid wie folgt:

Überzeugen Sie sich durch geeignete Tests von der Korrektheit Ihrer Implementation. Versuchen Sie auch den Algorithmus strukturell so zu formulieren, dass man die obige verbale Beschreibung wiedererkennen kann. Sorgen Sie dafür, dass im Programm geprüft wird, ob die beiden als Argumente übergebenden Zahlen tatsächlich positiv (also >0) sind. Ansonsten funktioniert der oben beschriebene Ablauf vielleicht gar nicht richtig!? Das macht man in Java üblicherweise so:

 if (irgendwassIstFaul) {
 System.out.println("eine passende Ausschrift");
 System.exit(-1); // Programmm sofort beenden
 // negative Parameter weisen den Rufer
 // auf ein abnormales Ende hin
 }
    

Abschließend hier noch ein paar Beispielaufrufe, die zeigen, wie sich Ihr Programm verhalten soll - offenbar müssen Sie sich NICHT darum kümmern, dass tatsächlich zwei Zahlen als Argumente übergeben werden.

$ java GGT 12 14
ggT(12, 14) = 2
$ java GGT 36 12
ggT(36, 12) = 12
java GGT 36 -12
nur positive ganze Zahlen als Argumente erlaubt
$ java GGT -36 12
nur positive ganze Zahlen als Argumente erlaubt
$ java GGT 666
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
 at GGT.main(GGT.java:6)
$ java GGT 6 sieben
Exception in thread "main" java.lang.NumberFormatException: For input string: "sieben"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
 at java.lang.Integer.parseInt(Integer.java:492)
 at java.lang.Integer.parseInt(Integer.java:527)
 at GGT.main(GGT.java:6)
 
public class GGT {

	public static void main(String s[]) {
		// eingaben akzeptieren
		int a = Integer.parseInt(s[0]);
		int b = Integer.parseInt(s[1]);
		
		// falls eine die eingegebene Zahlen a und b ein negativer Zahl ist, ein error message ergeben
		if ((a < 0) || (b <  0) ) {
			System.out.println( "nur positive ganze Zahlen als Argumente erlaubt");
		}
		
		//setze m = a und n = b und initialisiert c und r als integers
		int m = a;
		int n = b;
		int c;
		int r;

		/* sei m < n, dann wird die beide vertauscht 
		 * dann r = m - n
		 * setze dann m = n, n = r
		 * */ 
		if (m < n) {
			c = m;
			m = n;
			n = c;
			
			r = m - n;
			//ist r nicht gleich 0, fortfahren  ab line 15
			if (r != 0){
				System.out.println("ggt(" + m +", " + n + ") = " + r );
			}

		}
		

	}

}
Kofi

Kofi

Ghanaian born global citizen

comments powered by Disqus
Victor Asante-Kyei © 2021

With Love by Kofi

rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora