Euklidischer Algorithmus

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
stehu92
User
Beiträge: 2
Registriert: Mittwoch 21. Oktober 2015, 21:18

Hallo,

ich muss bis nächsten Donnerstag für die Uni ein Programm in python schreiben, welches den ggT Teiler von 2 Zahlen ausgibt.
Habe meinen Code auch schon soweit. Nur muss ich noch etwas einbauen! Und zwar: Ist der ggt eine der zwei Zahlen, soll folgender Satz ausgegeben werden: "Der ggT von number_1 und number_2 ist bereits ggt." Kann mir jemand helfen? :?

Hier mein Code:

Code: Alles auswählen

number_1 = 5
number_2 = 15

if (number_1 == 0):
  print number_2
else:
  while number_2 != 0:
    if (number_1==number_2):
      print number_1
    if (number_1 > number_2):
      number_1 = (number_1 - number_2)
    else:
      number_2 = (number_2 - number_1)
Zuletzt geändert von cofi am Mittwoch 21. Oktober 2015, 22:10, insgesamt 1-mal geändert.
Grund: Code-Highlighting korrigiert
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Willkommen im Forum und zu Python!

Wir sind nicht dazu da, um deine Hausaufgaben zu machen: http://www.python-forum.de/viewtopic.php?f=1&t=1689

Zwei Dinge sind wichtig: In welchem Namen ist am Ende der ggT und wenn du den mit den urspruenglichen Zahlen vergleichen willst, dann musst du dir eben merken was die urspruenglichen Zahlen sind.
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@stehu92: auch wenn Du erst Anfänger bist, gibt es ein paar Dinge, die man von Anfang an beachten sollte, damit sie einem gleich ins Blut übergehen und man nicht später erst umständlich umlernen muß: Eingerückt wird immer mit 4 Leerzeichen pro Ebene. Klammern nur da einsetzen, wo es nötig ist (wegen Syntax, Semantik oder besserer Lesbarkeit). Variablennamen sollten aussagekräftig sein. Durchnummerierte Namen verlieren aussagekraft so ziemlich. Bei so mathematischen Spielereien sind "a" und "b" als Namen völlig ok.

Code: Alles auswählen

a = 5
b = 15
if a == 0:
    print b
else:
    while b != 0:
        if a == b:
            print a
        elif a > b:
            a -= b
        else:
            b -= a
stehu92
User
Beiträge: 2
Registriert: Mittwoch 21. Oktober 2015, 21:18

Hey danke für eure Antworten,

ich hab mich jetz mal richtig damit beschäftigt und es funktioniert eigentlich auch schon alles. So wie unten funktioniert es einwandfrei.
Nur wenn ich jetz z.B. für a = 2.8 und für b = 1.1 eingebe führt das Programm nichts aus. Kann mir da vielleicht wer weiterhelfen? Erkennt vl wer einen Fehler im Code?

Code: Alles auswählen

#Euclidean Algorithm:

a = 2.4
b = 1.2

if (a == 0):
  print b
elif (b == 0):
  print a
  
else:
  gcd = a
  help = b

  while help != 0.0:  
    if (gcd > help): 
      gcd = (gcd - help)
    else:
      help = (help - gcd)

  if (b==gcd):	  
    print "Der ggT von %r und %r ist breits %r" %(a,b,gcd)
  elif (a==gcd):
	print "Der ggT von %r und %r ist breits %r" %(a,b,gcd)
  else:
	print gcd
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@stehu92: auch wenn Du erst Anfänger bist, gibt es ein paar Dinge, die man von Anfang an beachten sollte, damit sie einem gleich ins Blut übergehen und man nicht später erst umständlich umlernen muß: Eingerückt wird immer mit 4 Leerzeichen pro Ebene. Klammern nur da einsetzen, wo es nötig ist (wegen Syntax, Semantik oder besserer Lesbarkeit).

Für Kommazahlen kann es keinen größten gemeinsamen Teiler geben. Der ist nur für ganze Zahlen definiert.
Antworten