Größter gemeinsamer Teiler

Neue Frage »

Auf diesen Beitrag antworten »
Erstsemestler Größter gemeinsamer Teiler

Meine Frage:
Hey :-)

Hier noch ein weiteres Problem:

Ich möchte gerne ein Programm schreiben welches mir den größten gemeinsamen Teiler zweier Zahlen berechnet.

Vorgehensweise in der Mathematik:

Zahl 1 = 28;
Zahl 2 = 12;

ggT (28,12)

28-12 = 16
16-12 = 4
12-4 = 8
8-4 = 4
4-4 = 0

ggT somit = 4;

Meine Ideen:
Mein Code, der zwar für 24 und 9 (nur ein Beispiel) geht, aber für 124 und 12 nicht?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:

class Bruch
{
	public void ggT (int a, int b)
	{
		int c;
		for (int i=0; i<a;i++)
		{
			c = a-b;   // c = 48
			a=c; 		// a = 48
			if (a<b)		//Wenn c kleiner b , dann 	
			{
				int speicher;		 // 
				speicher = a;		// 48 in Speicher
				a = b;				// 4 auf a 
				b = speicher;		// 48 auf b
			}
			if (a==b)
			{
				System.out.println("Der ggT betraegt " + a);
				break; 
			}
		}
	}
}
			
		
	



Vielen Dank für Eure geschulten Blicke :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl

Die for-Schleife ist nicht nur sinnlos, sondern auch falsch. Schreibe an der Stelle while (true) und gut ist.
Statt der mehrfachen Subtraktion kannst du auch modulo verwenden, das spart Rechenzeit.
Auf diesen Beitrag antworten »
Erstsemestler

For for-Schleife?

Wie meinst du das genau?
Auf diesen Beitrag antworten »
eulerscheZahl

Manchmal machen die Finger nicht das, was der Kopf will. Habe es editiert. Du sollst Zeile 7 austauschen.
 
Auf diesen Beitrag antworten »
Erstsemestler

Hehe großes Grinsen Ich hatte das so interpretiert, dass ich zwei For-Schleifen im Programm habe :-)
Auf diesen Beitrag antworten »
eulerscheZahl

Nein, nur meine Unfähigkeit im Umgang mit der Tastatur.

Hier noch die Kurzversion:
code:
1:
2:
3:
public static int ggT(int a, int b) {
	return b == 0 ? a : ggT(b, a % b);
}
Auf diesen Beitrag antworten »
Erstsemestler

Da benötige ich noch ein Semester bis ich zu Beginn auf diese Kurzfassung komme :-)

Das ist der Bedingungsoperator, oder?
Auf diesen Beitrag antworten »
eulerscheZahl

Keine Ahnung, ob das Ding einen speziellen Namen hat.
Ist eigentlich ganz einfach: Bedingung ? wenn true : wenn false;
Zum ? gehört auch immer ein :
Auf diesen Beitrag antworten »
Erstsemestler

Hehe :-)


Dankeschön ;-)
Auf diesen Beitrag antworten »
Karlito

Klugscheißermodus an:
Der ?-:-Operator wird oft Bedingungsoperator genannt und ist der einzige ternäre Operator in Java.

Klugscheißermodus aus...

Augenzwinkern
Auf diesen Beitrag antworten »
Erstsemestler

Hehe, danke für die Bestätigung :-) großes Grinsen
 
Neue Frage »
Antworten »


Verwandte Themen

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