Ausgabe des größten gemeinsamen Teilers zweier positiver ganzer Zahlen.
Die ist die verbesserte Version. Bei der Ur-Version wird davon
ausgegangen, das der größte gemeinsame Teiler von m und n
gleich dem größten gemeinsamen Teiles von m und m - n ist.
Struktogramm
Quellcode
import java.io.*;
/** Funktion: Euklidischer Algorithmus
Ausgabe des größten gemeinsamen Teilers zweier positiver ganzer Zahlen
Application ohne Oberfläche, läuft in der Dos-Box: "java euklid"
@author DG1XPZ
@version JDK131
*/
class euklid {
public static void main(String[
] vArgs) {
euklid eu = new
euklid ( );
//Instanz von
der Klasse "euklid" erzeugen System.out.println("Euklidischer
Algorithmus, Ausgabe des groessten gemeinsamen Teilers"
+" zweier
positiver ganzer Zahlen."); // Ausgabe auf Bildschirm
System.out.println("Bitte
Zahl 1 eingeben:"); // Ausgabe auf Bildschirm int
e1 =
eu.eingabe(
);
//1.Zahl von Tastatur holen System.out.println("Bitte
Zahl 2 eingeben:"); // Ausgabe auf Bildschirm int
e2 =
eu.eingabe(
);
//2.Zahl von Tastatur holen System.out.println("Der
groesste gemeinsame Teiler ist: "+eu.ggt(e1,e2));
} /** Funktion:
Eingabe (ganze Zahl) von Tastatur einlesen
@exception IOException Wenn
keine Zahlen sondern Buchstaben o. Zeichen eingegeben wurden
@return
Die zurückgegebene Integerzahl
*/
privat int eingabe(
) {
int z=0;
BufferedReader
eing=new
BufferedReader (new
InputStreamReader(System.in));
// Eingabepuffer erzeugt, für Eingabe über Tastatur
try {
//Fehlerbehandlung einleiten (try=versuche)
String
eingstr=eing.readLine(
);
// Lese String von Eingabepuffer (Tastatur)
z=Integer.parseInt(eingstr);
// Umwandeln String in Zahl
} catch(java.io.IOException
ioe) {
// wenn Fehler dann Meldung erzeugen
System.err.println("Fehler! Eingabe konnte nicht interpretiert
werden!");
// Ausgabe der Fehlermeldung wenn keine Zahlen eingegeben werden
}
return
z; //Rückgabe der
ganzen Zahl
} //private int
eingabe(
)
/** Funktion: Größten gemeinsamen Teiler
zweier Zahlen ermitteln
@param m Erste Zahl
@param n Zweite Zahl
@return
Rückgabe des Größten gemeinsamen Teilers
*/
public int ggt(int
m, int
n){
int r;
do {
if (m<n)
{
r=m;
m=n; n=r;
}
r = m
% n;
if (r!=0)
{
m=n; n=r;
}
} while
( r!=0
);
return
n; //Rückgabe
des Größten gemeinsamen Teilers
} //public
int ggt(int m,int n)