Größter gemeinsamer Teiler (ggT) mit dem euklidischen Algorithmus bestimmen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
python007
User
Beiträge: 2
Registriert: Donnerstag 30. April 2020, 13:13

Hallo, ich habe noch nicht sehr viele Erfahrungen, was die Programmierung mit Python betrifft.
Ich habe die Aufgabe ein Python-Programm zu programmieren, was mir den ggT (größten gemeinsamen Teiler) aus zwei Zahlen bestimmt.
Mein Programm hab ich so weit auch geschrieben. Ich habe nun jedoch das Problem, das der ggT(0,5) = 0 der ggt (5,0)= 5 ist. Dabei müssten jedoch in beiden Fällen der gleiche Teiler rauskommen.

Code: Alles auswählen

a = int(input( "Geben Sie Zahl 1 ein: "))    
b = int(input ("Geben Sie Zahl 2 ein: "))

if a == 0:
    print("Der größte gemeinsame Teiler ist", a)
else:
    while b != 0:
        if a > b:
            a = a - b 
        else:
            b = b - a
    print("Der größte gemeinsame Teiler ist", a)
Leider kann ich jedoch keinen Fehler in meinem Programm finden.
Ich hoffe ihr könnt mir mit meinem Problem helfen.

Liebe Grüße python007
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@python007: An welcher Stelle verhält sich das Programm denn anders als Du erwartest? Und warum erwartest Du da etwas anderes?

Edit: Ich würde daraus eine Funktion machen die Du mit verschiedenen Werten zum Testen aufrufen kannst ohne das man da jedes mal Benutzereingaben für braucht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
python007
User
Beiträge: 2
Registriert: Donnerstag 30. April 2020, 13:13

Das mit der Eingabe der beiden Zahlen, wurde in der Aufgabe so gefordert.

Mein Problem besteht nur darin, dass wenn die zweite Zahl 0 ist, ich als ggT nicht null bekomme sondern den Wert der ersten Zahl.

Leider verstehe die Sache mit dem Programmieren noch nicht so ganz und habe noch einige Schwierigkeiten. Deshalb finde ich keinen Fehler in meinem Programm und weiß nicht was ich in meinem Programm ändern muss, damit dieser Fehler behoben wird.
Benutzeravatar
__blackjack__
User
Beiträge: 13077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@python007: Das mit der Eingabe der Zahlen kann ja so bleiben, aber derAlgorithmus sollte trotzdem in einer Funktion stehen die man dann mit den Eingaben aufrufen kann. Oder eben auch mit Testwerten.

Ich denke Du beschreibst das Problem falsch. Denn das was Du als Problem beschreibst ist kein Problem sondern ein korrektes Ergebnis.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

python007 hat geschrieben: Donnerstag 30. April 2020, 16:44 Mein Problem besteht nur darin, dass wenn die zweite Zahl 0 ist, ich als ggT nicht null bekomme sondern den Wert der ersten Zahl.
Nein. Das ist nicht das Problem. Richtig ist allerdings Deine Aussage aus dem Anfangsbeitrag, dass ggT(a, b) = ggT(b, a) sein muss, egal, welche Werte a und b haben.
Leider verstehe die Sache mit dem Programmieren noch nicht so ganz und habe noch einige Schwierigkeiten. Deshalb finde ich keinen Fehler in meinem Programm und weiß nicht was ich in meinem Programm ändern muss, damit dieser Fehler behoben wird.
Schwierigkeiten hast Du in diesem Fall mit der Mathematik. Kann 0 der ggT von zwei Zahlen sein, die nicht beide 0 sind? Oder anders gefragt, ist 5 (aus Deinem Beispiel) ein Vielfaches von 0? Die Vorstellung, dass der Teiler immer kleiner sein muss, das Vielfache immer größer, stimmt nur für positive Zahlen.
Antworten