Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- Größter gemeinsamer Teiler (http://www.informatikerboard.de/board/thread.php?threadid=2074)


Geschrieben von Erstsemestler am 16.01.2015 um 19:35:

  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 :-)



Geschrieben von eulerscheZahl am 16.01.2015 um 19:47:

 

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.



Geschrieben von Erstsemestler am 16.01.2015 um 19:53:

 

For for-Schleife?

Wie meinst du das genau?



Geschrieben von eulerscheZahl am 16.01.2015 um 19:56:

 

Manchmal machen die Finger nicht das, was der Kopf will. Habe es editiert. Du sollst Zeile 7 austauschen.



Geschrieben von Erstsemestler am 16.01.2015 um 20:02:

 

Hehe großes Grinsen Ich hatte das so interpretiert, dass ich zwei For-Schleifen im Programm habe :-)



Geschrieben von eulerscheZahl am 16.01.2015 um 20:06:

 

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);
}



Geschrieben von Erstsemestler am 16.01.2015 um 20:07:

 

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

Das ist der Bedingungsoperator, oder?



Geschrieben von eulerscheZahl am 16.01.2015 um 20:10:

 

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



Geschrieben von Erstsemestler am 16.01.2015 um 20:16:

 

Hehe :-)


Dankeschön ;-)



Geschrieben von Karlito am 16.01.2015 um 20:28:

 

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

Klugscheißermodus aus...

Augenzwinkern



Geschrieben von Erstsemestler am 16.01.2015 um 23:30:

 

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


Forensoftware: Burning Board, entwickelt von WoltLab GmbH