Gcd.. Logisch?

Neue Frage »

zt Auf diesen Beitrag antworten »
Gcd.. Logisch?
Hallo,

Angenommen, ich möchte den größten gemeinsamen Teiler von 192.439.448.288.309.551 verschiedenen - nicht aufeinanderfolgenden Zahlen - bestimmen.

Ich bin mir im Moment nicht 100% sicher, ob ich richtige liege das die performanteste Angelegenheit ist. Deswegen mal mein Gedanke:

Ich fange an mit der kanonischen Primfaktorzerlegung der kleinsten Zahl und erhalte Anschließend teile ich die nächstgrößere Zahl durch jeden Primfaktor des "Merkers". Bleibt das Ergebnis der Division (1) durch ohne Rest, so ist durch teilbar. Ist der Exponent in kleiner als der Exponent von im "Merker", so wird der Exponent im Merker ausgetauscht. Ist er gleich oder größer, ignoriere ich das Ergebnis. Ist das Ergebnis der Division (siehe 1) nicht ohne Rest machbar, so hau ich aus dem Merker komplett raus. Der Vorgang wiederholt sich jetzt bis entweder alle Zahlen durchlaufen wurde oder es eben keinen ggT gibt ("Merker"=1).

Ist das i.O. oder falsch? Wenn i.O., gibt es eine bessere Lösung?

Danke schonmal.

Edit: Müll raus, siehe unten.
sqrt(2) Auf diesen Beitrag antworten »
RE: Gcd.. Logisch?
Zitat:
Original von zt
Angenommen, ich möchte den größten gemeinsamen Teiler von 192.439.448.288.309.551 verschiedenen - nicht aufeinanderfolgenden Zahlen - bestimmen.

Kannst du mir was von deinem Arbeitsspeicher abgeben? Über 1,5 Exabyte scheinst du ja zu haben.

Zitat:
Original von zt
Ist das i.O. oder falsch? Wenn i.O., gibt es eine bessere Lösung?

Deine Notation ist verwirrend bis falsch, aber ich denke, du meinst das Richtige, dann funktioniert dein Algorithmus. (Es wäre vielleicht sinnvoller, wenn du Programmcode postest.) Das Laufzeitverhalten ist O(n), besser wird es nicht gehen. In der Praxis wäre es natürlich erwünscht, wenn du mit einer Zahl anfängst, die möglichst wenig unterschiedliche Primfaktoren hat. Eventuell lohnt es sich, vorher mal drüberzuschauen, ob du vielleicht eine Primzahl dabei hast.
AD Auf diesen Beitrag antworten »

Zitat:
Original von zt
so ist durch teilbar.

Das muss ein ganz neues Potenzgesetz sein, das hier zur Anwendung kommt. Erhelle bitte die Unerleuchteten!
zt Auf diesen Beitrag antworten »
RE: Gcd.. Logisch?
Zitat:
Original von sqrt(2)
Kannst du mir was von deinem Arbeitsspeicher abgeben? Über 1,5 Exabyte scheinst du ja zu haben.

Ich wollte damit nur sagen, dass es sehr, sehr viele Zahlen sind. Augenzwinkern

Zitat:
Original von zt
Deine Notation ist verwirrend bis falsch..

Das dachte ich mir. unglücklich

Zitat:
Original von sqrt(2)
Das Laufzeitverhalten ist O(n), besser wird es nicht gehen. In der Praxis wäre es natürlich erwünscht, wenn du mit einer Zahl anfängst, die möglichst wenig unterschiedliche Primfaktoren hat.

Kuhl. smile (Was auch immer O(n) bedeutet.)

Zitat:
Original von Arthur Dent
Erhelle bitte die Unerleuchteten!

Da könnt ihr lange warten. smile
AD Auf diesen Beitrag antworten »

Na gut, dann werde ich deutlicher: Zumindest dieser Teil ist himmelschreiender Blödsinn - Beispiel:

Nur zwei Werte mit nur einem Primfaktor: .

Dann ist , und ist offenbar durch teilbar. Nach deiner Aussage ist dann auch durch teilbar, was ja wohl offensichtlich falsch ist.
Leopold Auf diesen Beitrag antworten »

Mit gefühlter Wahrscheinlichkeit ist der größte gemeinsame Teiler der Zahlen 1.
 
 
zt Auf diesen Beitrag antworten »

Zitat:
Original von Arthur Dent
Na gut, dann werde ich deutlicher: Zumindest dieser Teil ist himmelschreiender Blödsinn


Ich hab' doch zugegeben, dass es Blödsinn war und im Eingangspost habe ich es doch schon korrigiert.

Edit: Jetzt wo ich's nochmal lese.. mit Da könnt ihr lange warten. meinte ich, dass es in der Tat Unsinn ist und ich es nicht erklären kann. Sorry. *g*
AD Auf diesen Beitrag antworten »

Ok, zur Aufgabe: Du willst bestimmen.


Falls die Primfaktorzerlegung aller Zahlen bereits vorliegt (woher auch immer), dann ist dein Verfahren Ok.


Falls nicht, dann ist m.E. die naheliegende Variante bei weitem vorzuziehen:

Rekursion und für

Der ggT von diesen zwei Zahlen wird dabei wie üblich über den euklidischen Algorithmus (EA) bestimmt. Wie Leopold schon anmerkte, wird dann wohl sehr rasch sehr, sehr klein werden, so dass der EA nur so durchrast.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »