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

Informatiker Board » Themengebiete » Praktische Informatik » Euklididscher Algorithmus Python » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 7 Beiträge
Dr.Java

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

Danke für deine Mühen.

lg
eulerscheZahl

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

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

lg
eulerscheZahl

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))
Dr.Java

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
eulerscheZahl

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.
Dr.Java Euklididscher Algorithmus Python

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