Kleinstes gemeinsames Vielfaches in JavaScript berechen

vom 16.05.2011, 09:40 Uhr

Hallo, wir haben im Informatik-Unterricht die Aufgabe bekommen, in JavaScript einen Bruchtaschenrechner zu programmieren. Erstmal bin ich jetzt bei der Addition. Brüche lassen sich bekanntlich addieren, indem man es auf die selben Nenner bringt, und dann nur die Zähler addiert. Zum Kürzen brauche ich allerdings das kgV. Ich habe im Internet zwar bereits funktionierende Scripts dazu gefunden, aber ein Script ohne, dass man durchsieht halte ich für sinnlos. Deshalb wollte ich mal fragen, ob mir jemand erklären kann, wie so ein Script aussieht.

Benutzeravatar

» delpiero224 » Beiträge: 1378 » Talkpoints: 4,49 » Auszeichnung für 1000 Beiträge



Ich würde eine Schleife durchgehen, mit der du immer beide Zahlen multiplizierst und dann am Ende jedes Durchlaufes prüfst ob die beiden Zahlen den gleichen Wert haben. Falls die beiden Zahlen gleich sind, hast du deinen kleinsten gemeinsamen Nenner und du kannst aus der Schleife herausspringen und mit diesem Nenner weiter rechnen oder ihn ausgeben. Das Problem ist, dass nicht beide Zahlen mit dem gleichen Wert multipliziert werden, wenn du beispielsweise die zwei Zahlen 2 und 5 hast, wäre der kleinste gemeinsame Nenner die 10.

Also müsste die 5 mit der zwei multipliziert werden, wobei die 2 mit der 5 multipliziert werden müsste. Man merkt zwar, eine gewisse Ähnlichkeit, da einfach die beiden Zahlen nur vertauscht sind, das würde aber nicht überall funktionieren. Bei der 6 und der 3 wäre der kleinste gemeinsame Nenner die 12. Das würde für die 6 eine Multiplikation mit der 2 und für die 3 eine Multiplikation mit der 4 bedeuten, hier geht dieses Muster schon wieder verloren.

Benutzeravatar

» hennessy221 » Beiträge: 5132 » Talkpoints: -1,94 » Auszeichnung für 5000 Beiträge


Das einfachste ist eine Schleife, welche A mit x Multipliziert. Das Ergebnis teilst du durch B. Kommt als Lösung eine ganze Zahl kannst du die Brüche mit diesen beiden Faktoren erweitern. Andernfalls x um ein erhöhen und so weiter. Effizienter ist es jedoch, wenn du zu erst über den euklidischen Algorithmus den ggT berechnest und anschließen über a*b = ggT(a,b)*kgv(a,b) das kgV. Den euklidischen Algorithmus kannst du entweder rekursiv oder iterativ implementieren.

Benutzeravatar

» Smoon » Beiträge: 440 » Talkpoints: 2,83 » Auszeichnung für 100 Beiträge



Ähnliche Themen

Weitere interessante Themen

^