Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

AW: ggT und KgV von 2 Zahlen berechnen - absolut keine Ahnung

  Alt 21. Nov 2010, 20:06
@gammatester

das was du nun erzählst ist völlig daneben..
Was ist völlig daneben? Ein fehlerhaftes Ergebnis meiner Funktion würde mir reichen.
nimm die funktion aus meinem ersten Programmbeispiel ..#5

ggt(a,b) liefert dasgleiche wie ggt(b,a)
Wie man leicht sieht, beziehe ich mich auf Klaus (wer lesen kann, ist klar im Vorteil).
sollten a oder b negativ sein , was von der mathematischen definition
bez. modulo gar nicht vorgesehen ist ( hier unterscheidet sich mal wieder Mathematik von programmier-sprachen)

dann sollte man so vorgehen :
c:=abs(ggt(a,b));
Ich 'erzähle' nichts, sondern zeige nur die Ergebnis von Klaus's letzter Funktion. Wenn Du meinst, daß ist 'daneben". dann stimmen wird ja überein. Wir stimmen allerdings nicht überein in folgenden Punkten:

- der ggt von negativen Zahlen und mod von negativen Zahlen ist selbstverständlich mathematisch vorgesehen

- Programmiersprachen unterscheiden sich darin nicht: mod ist zumindest in Pascal für negative Zahlen definiert. ggt nicht, muß also selbstgeschrieben werden. Aber möglichst richtig. Pascal mod und mathematisches mod unterscheiden sich leider. Pascal: -5 mod 3 = -2, mathematisch ist -5 mod 3 = 1. Der mathematische Rest a mod b für b > 0 ist nämlich: 0 <= a mod b < b. Was bei Pascal nun mal leider nicht der Fall. Wenn man einen mathematisch korrekten ggt via Euklidischem Algorithmus berechnen will muß man das berücksichtigen.

- c:=abs(ggt(a,b)) ist zwar richtig, aber nur wenn ggt schon halbwegs richtig ist, Klaus ' Funktion liefert ggt(-2,-2)=0.