Größten gemeinsamen Teiler finden

KogoroMori21

Aktives Mitglied
Guten Tag,

ich komme einfach nicht weiter diese Aufgabe zu lösen. Ich habe keinen Lösungsansatz und weiß nicht wie ich anfangen soll, im Internet finde ich auch leider nichts.

Die Aufgabe ist: Schreiben Sie eine Methode groessterGemeinsamerTeiler(Integer,Integer), der die größte Zahl findet, die Teiler beider übergebenen Zahlen ist. Nutzen Sie dabei ein einfaches Verfahren, bei dem Sie z. B. alle Zahlen von 1 bis zur ersten übergebenen Zahl ausprobieren. Sollte ein Parameter kleiner 1 oder null sein, ist das Ergebnis 0. Zeichnen Sie zunächst ein Aktivitätsdiagramm für den Ablauf Ihrer Methode.



Das ist die main:

public class ZahlenanalyseTest {
public static void main(String[] s) {
Zahlenanalyse z = new Zahlenanalyse();

System.out.println("ggT(null,42): "
+ z.groessterGemeinsamerTeiler(null, 42));
System.out.println("ggT(66,99): "
+ z.groessterGemeinsamerTeiler(66, 99));
System.out.println("ggT(99,66): "
+ z.groessterGemeinsamerTeiler(99, 66));
System.out.println("ggT(132,133): "
+ z.groessterGemeinsamerTeiler(132, 133));




Hat da jemand bitte eine Idee?

MfG
 
Da ist doch schon ein erster Ansatz gegeben, den Du versuchen kannst:

Nutzen Sie dabei ein einfaches Verfahren, bei dem Sie z. B. alle Zahlen von 1 bis zur ersten übergebenen Zahl ausprobieren.

Hast Du diesen Satz verstanden? Was bedeutet das genau? Was sollst Du machen? Kannst Du das für das Beispiel eines Aufrufs mit 6, 9 durchspielen?

Bei sowas ist immer wichtig, dass man sowas erst einmal im Detail durchspielt. Mit etwas Erfahrung macht man das alles im Kopf, aber am Anfang sollte man da Stift und Papier bemühen.
 
Da ist doch schon ein erster Ansatz gegeben, den Du versuchen kannst:



Hast Du diesen Satz verstanden? Was bedeutet das genau? Was sollst Du machen? Kannst Du das für das Beispiel eines Aufrufs mit 6, 9 durchspielen?

Bei sowas ist immer wichtig, dass man sowas erst einmal im Detail durchspielt. Mit etwas Erfahrung macht man das alles im Kopf, aber am Anfang sollte man da Stift und Papier bemühen.


Ehrlich gesagt hab ich die Aufgabenstellung nicht ganz verstanden, ich tu mich damit echt schwer das auch noch in Java umzusetzen...
 
Vergiss java. Das hat jetzt erst einmal nichts mit Java zu tun.

Hast Du verstanden, was der größte gemeinsame Teiler ist? Das ist ein mathematischer Begriff, den Du hier natürlich erst einmal verstanden haben musst.

Wenn Du dann den größten gemeinsamen Teiler von 6 und 9 ermitteln sollst: Wie gehst DU dann vor? Die berechnest Du den ggT (ggT = größter gemeinsamer Teiler).
 
Ich hab momentan echt eine Denkblockade, weißt du denn wie das zu lösen ist?😞😔
Das geht so nicht, niemand wird dir eine Lösung vorgeben. Wir helfen dir nur die Lösung zu finden und ganz genau das hat JustNobody versucht.

Um auf sein Beispiel zurückzukommen: 6 & 9.
Dann ist der größte gemeinsame Teiler die 3, denn die 3 ist die größte Zahl, welche ohne Rest von 6 und 9 teilbar ist. Teilbarkeit wird mit dem Modulo-Operator (%) geprüft. Eine Zahl n ist z.B. gerade, wenn gilt n % 2 == 0.
 
Wen es am Verständnis des ggT scheitert: Da hilft dann evtl. https://de.wikipedia.org/wiki/Größter_gemeinsamer_Teiler

Wobei da deutlich mehr in die Tiefe gegangen wird, als du hier benötigst.

Evtl. hilft die Vorstellung eines Bruches: Sieh die zwei Zahlen als ein Bruch an: 6 / 9.
Dann ist die Frage: Kannst Du da etwas kürzen?

Die Logik dahinter ist natürlich - so wie der Wikipedia Artikel es erläutert, eine Primzahlen-Zerlegung:
6 = 2 * 3
9 = 3 * 3
bei (2*3) / (3*3) sieht man dann: oben und unten wird mit 3 Multipliziert, also kann man die 3 streichen.

Aber hier geht es nicht um eine Primzahlen-Zerlegung sondern um einen anderen Lösungsansatz und der ist kurz umrissen worden. Und das ist auch meistens etwas, das man selbst macht, wenn man etwas prüft:

2346 / 7422 - wenn Du den Bruch kürzen wolltest: Wie gehst Du vor? Was ließe sich machen?
(Letzte Ziffer ist durch 2 teilbar - das könnte man also machen. Quersumme ist durch 3 teilbar - also hat man schon zwei Teiler mit denen man kürzen könnte. Durch 4 Teilbar? Beide Zahlen nicht. Durch 5 Teilbar? Auch nicht. Durch 6 teilbar? Klaro, wenn es durch 2 und 3 teilbar war ...

Kannst Du dieses Vorgehen etwas nachvollziehen?
 

Zurück
Oben