Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Optimiere Addition
Delete - Di 19.04.05 14:29
Titel: Optimiere Addition
Große Zahlen sind immer faszinierend: :wink:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Function TForm1.erzeugeZahl(Stellen: Integer):String; Var n: Integer; Begin Result := ''; For n := 1 To Stellen Do Result := Result + IntToStr(Random(10)); End; |
Mit dieser Funktion werden beide addiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| Function Summe(Zahl1,Zahl2: String): String; Var n: Integer; Uebertrag: Byte; len: Integer; zw: Integer; Begin If Length(Zahl1) < Length(Zahl2) Then Begin Result := Zahl1; Zahl1 := Zahl2; Zahl2 := Result; End;
len := Length(Zahl1); For n := 1 To len-Length(Zahl2) Do Zahl2 := '0'+Zahl2; Result := ''; Uebertrag := 0; For n := 1 To len Do Begin zw := Uebertrag + StrToInt(Zahl1[len-n+1])+StrToInt(Zahl2[len-n+1]);
If zw > 9 Then Uebertrag := 1 Else Uebertrag := 0; Result := IntToStr(zw Mod 10) + Result; End;
If Uebertrag > 0 Then Result := IntToStr(Uebertrag)+Result; End; |
Hier werden öfter Funktionen optimiert, mit Assembler, besseren Algorithmen etc..
Kann man diese Funktion zur Addition von hohen Zahlen optimieren?
jaenicke - Di 19.04.05 15:46
Also das dürfte seeehhr lange dauern bei richtig großen Zahlen würde ich sagen. Jedesmal in einem String zu suchen....
Da wärs wohl noch schneller ein array of Byte zu benutzen (und der Speicherverbrauch wär ähnlich)...
ABER: Es gibt bereits im Netz recht effiziente Algorithmen zum Gebrauch sehr großer Zahlen, wär wohl sinnvoller danach zu suchen...
Zum Beispiel gibts da auch einiges hier im Forum:
http://www.delphi-forum.de/topic_Unendliches+Integer_1358.html&sid=8b67fda137a054152ae43351d085507e
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!