JAVA-Programm

Neue Frage »

Auf diesen Beitrag antworten »
Kuboudy JAVA-Programm

Implementieren Sie nach dem Beispiel der vorgegebenen Java-Klasse Sum1 eine neue Klasse KGV, welche zunächst (in einer Methode ggt) den Euklidischen Algorithmus zur Bestimmung des größten gemeinsamen Teilers möglichst originalgetreu in Java umsetzt und darauf aufbauend (in einer weiteren Methode kgv) das kleinste gemeinsame Vielfache zweier Zahlen ermitteln kann.
Das Prinzip des euklidischen Algorithmus wird auch gegenseitige Wechselwegnahme genannt. Eingangsgrößen sind zwei natürliche Zahlen a und b. Bei der Berechnung verfährt man nach Euklid wie folgt:

1. Setze m = a; n = b.
2. Ist m < n, so vertausche m und n.
3. Berechne r = m - n.
4. Setze m = n, n = r.
5. Ist r ungleich 0, so fahre fort mit Schritt 2.

Nach Ablauf des Verfahrens hat man mit m den ggT von a und b gefunden.

Überzeugen Sie sich durch geeignete Tests von der Korrektheit Ihrer Implementation.

Benutzen Sie die Methode ggt,um eine weitere Methode kgv zu implementieren, die das kleinste gemeinsame Vielfache zweier Zahlen in Anwendung des allgemeinen mathematischen Zusammenhangs:

x * y = kgv(x, y) * ggt(x, y)

Ich weiß, dass das sicherlich ne total einfache Aufgabe is... aber ich komm irgendwie damit überhaupt noch nich klar, weil ich grad ganz frisch in die Informatik eingestiegen bin. Also wenn jemand Spaß am (kurzzeitigen) Programmieren hat, hoffe ich, dass er mir helfen kann. Vielen Dank
 
Auf diesen Beitrag antworten »
psychophoniac

Ich empfehle dir, zunächst die folgende Seite durchzulesen:
<suche bei wikipedia nach ggT> ;)
(darf keine links posten)

Das Programm ist rekursiv geschrieben, das bedeutet die funktionen kgv und ggt rufen sich immer wieder selber auf, vll hattest du das schon, ansonsten siehe:
<suche bei google nach uni marburg rekursion, erstes ergebnis, ist ein pdf>

Ich hatte eine ähnliche Aufgabe, hier ist meine Lösung, ich denke die Taugt ganz gut.

[code]
/**
* Dieses Programm dient dazu, das kleinste gemeinsame vielfache (kgV)
* und den grössten gemeinsamen Teiler (ggT)
* von zwei Zahlen zu berechnen.
*
* @author psychophoniac (im matheboard, PM an mich dann kriegst du meine email für fragen)
*/

package kgv;
import java.util.Scanner;

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Integer zahl1 = new Integer(1), zahl2 = new Integer(1);

Scanner scan = new Scanner(System.in);

//BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Bitte geben Sie Zahl 1 ein:");

//eingabe holen
zahl1 = Integer.parseInt(scan.next());

//eingabe2 holen
System.out.println("Bitte geben Sie Zahl 2 ein:");
zahl2 = Integer.parseInt(scan.next());

//kgv berechnen
System.out.println("Das kgV von " + Integer.toString(zahl1)
+ " und " + Integer.toString(zahl2)
+ " ist :"
+ Integer.toString(kgV(zahl1, zahl2)));

return; // fertig.

}

//grösster gemeinsamer teiler zweier zahlen > 0
private static int ggT(int a, int b)
{
if(a < 0)
a = Math.abs(a); //Math.abs(x) gibt den betrag x zurück
if(b < 0)
b = Math.abs(b);
if(b == 0) // Wenn b gleich 0
return a; // ggT gefunden
else
return ggT(b, a % b); // andernfalls weitersuchen
};

// das kgV ergibt sich aus folgender Formel:
//(abs a*b) / ggT(a,b) = kgV(a,b)
private static int kgV(int a, int b)
{
return (Math.abs(a * b) / ggT(a,b));
}

}
[/code]
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »