Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Euklididscher Algorithmus Python » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Euklididscher Algorithmus Python
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Euklididscher Algorithmus Python Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo. Ich habe ein Programm geschrieben das in Python mit Hilfe des iterativen,euklidischen Algorithmus den kleinsten gemeinsame Nenner zweier Zahlen berechnet.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
def gcd(m,n):
    if type(m)!=int or type(n)!=int or m<0 or n<0:
	    return None
  	
    else:
	    while n!=0:
		    h=m%n
		    m=n
		    n=h
    return m

Ich würde jetzt gerne eine Funktion aufstellen die mithilfe von input ,den kleinsten ,gemeinsamen Nenner für beliebig,viele positive Zahlen ermittelt und mit print ausgibt .Es soll dann solange laufen bis man eine Null eingibt die für die Berechnung dann nicht mehr berücksichtigt wird.
Wäre sowas machbar,wenn ja wie?

Mein Ansatz soweit:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
def gcd(m,n):
    if type(m)!=int or type(n)!=int or m<0 or n<0:
	    return None
  	
    else:
	    while n!=0:
		    h=m%n
		    m=n
		    n=h
    return m
    while (m !=0):
	    input("Input nat. number (or 0 to quit)):"
    if m=0:                                                                             
       print("GCD":42)

Danke schonmal und lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

10.11.2016 18:48 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das Einlesen der Zahlen gehört nicht mehr in gcd, wie es deine Einrückung impliziert.
gcd(a,b,c) = gcd(gcd(a,b),c), das heißt du liest die erste Zahl ein und für jede weitere ersetzt du sie durch das Ergebnis von bisherigem ggT und neuer Eingabe. Ich habe es jetzt nicht ausprobiert, aber ggT(0, n) sollte n ergeben. Also musst du die erste Eingabe nicht einmal gesondert behandeln.

__________________
Syntax Highlighting fürs Board (Link)
10.11.2016 20:08 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Danke für deine Antwort.

Verstehe ich das richtig ,du meinst man sollte eher auf jeden Fall ne separate Funktion erstellen die den Algorithmus inklusive hat?
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
def cli_gcd():
    if type(m)!=int or type(n)!=int or m<0 or n<0:
	    return None
  	
    else:
	    while n!=0:
		    h=m%n
		    m=n
		    n=h
    return m
    while (m !=0):
	    input("Input nat. number (or 0 to quit)):"
    if m=0:                                                                             
       print("GCD":42)


So vielleicht in etwa?

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

11.11.2016 10:42 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Eine Funktion, die den ggT zweier Zahlen berechnet und außerhalb davon eine Schleife, die Zahlen einliest und den Algorithmus aufruft.
In Zeile 10 hast du ein return, Zeile 11 wird also nicht ausgeführt.

edit:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
def gcd(m,n):
    if type(m)!=int or type(n)!=int or m<0 or n<0:
	    return None
  	
    else:
	    while n!=0:
		    h=m%n
		    m=n
		    n=h
    return m

result = 0
while True:
    n = int(input('enter natural number (0 to quit)'))
    if (n == 0): break
    result = gcd(result, n)
print('gcd = ' + str(result))


__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 11.11.2016 10:49.

11.11.2016 10:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ah so ,okay daran hab ich nicht gedacht .Ist das die neue Funktion ,die gibt dann den enter natural number -Befehl aus?

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

11.11.2016 11:14 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Eingabe steht in keiner Funktion, wird einfach so ausgeführt, nachdem die Funktionsdefinitionen gelesen wurden.

__________________
Syntax Highlighting fürs Board (Link)
11.11.2016 11:18 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Dr.Java Dr.Java ist männlich
Foren As


images/avatars/avatar-71.jpg

Dabei seit: 21.03.2016
Beiträge: 99

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ach so,ok,ah, ich glaube ich habs jetzt.

Danke für deine Mühen.

lg

__________________
Zitat:
"Ich glaube, es gibt einen weltweiten Bedarf an vielleicht fünf Computern."
-Thomas Watson

11.11.2016 11:53 Dr.Java ist offline Beiträge von Dr.Java suchen Nehmen Sie Dr.Java in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Euklididscher Algorithmus Python