AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

größerer Datentyp als Extended

Ein Thema von Mussi0 · begonnen am 4. Sep 2006 · letzter Beitrag vom 5. Sep 2006
Antwort Antwort
Seite 2 von 2     12   
Mussi0

Registriert seit: 8. Jun 2006
55 Beiträge
 
#11

Re: größerer Datentyp als Extended

  Alt 5. Sep 2006, 17:31
Also in meinen Algo geht es im Grunde darum
das der Nutzer einfach eine mind. dreistellige Zahl eingibt
und dann wird so wie ich das schon mal geschrieben habe zusammen
addiert.

Zitat:
Übrigens im DECMath DEMO findest du einen Algo. für Automorphe Zahlen, das sind Zahlen der Form X' = X^2 wobei alle Ziffern von X als Ziffern in X^2 enthalten sind
d.h. doch nur das alle x-Werte in x^2 enthalten sind oder?

@jfheins: leider nicht da meine Zahlen über die 20 stellen gehen und ich nicht weiß
wie groß die Werte werden können.

Gruß
Muss!0
Wer die anderen neben sich klein macht ist nie groß.
von Johann Gottfried Seume

Website: http://mussio.funpic.de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#12

Re: größerer Datentyp als Extended

  Alt 5. Sep 2006, 18:23
Ok, ein kurzer Blick ins WEB brachte einige Seiten zum Vorschein, es gibt sehr viel Infos zur diesen Palindromen (naja gibt ja auch leute die Millionen Stellen von Pi berechnen oder sonstwas).

So wie es aussieht wirst du mit DECMath oder BigInt nicht effizient zum Ziel kommen. Du benötigst eine spezielle Zahlenrepräsentation, dezimal im Speicher möglichst effizient gepackt als BCDs mit einer Ziffer pro Nibble eines Bytes, und eben einen schnelle Funktion die nun diese Zahlen addieren kann. Diese Funktion sollte also die Zahl selber mit ihrem Spiegelbild addieren können.

In einem Cardinal können wir somit Zahlen bis 99999999 abspeichern, in einem Int64 Zahlen bis 9999999999999999. Die Berechnung der Spiegelbildzahl beschränkt sich nun darauf die Nibbles dieser Cardinal zu vertauschen. Dafür gibt es sehr effiziente Verfahren die OHNE Schleifen auskommen.

Dann benötigst du noch eine Funktion die überprüfen kann ob eine solche Zahl ein Palindrom darstellt, am besten gleich als Resultat in der spezielisierten Additions-Funktion.

Dieser Weg ist aber dann immer noch eine sogennante "Brute Force" Suche, da man probiert einfach alle Zahlen durch um die entsrechenden Palindrome zu erzeugen. Ich persönlich mag sowas nicht und preferiere den exakten mathem. Weg der dann per Formel direkt solche Palindrome oder ganze Gruppen von solchen berechenen kann. Dummerweise scheint dies nicht möglich, nch scheinen sich Mathematiker mit diesem Problem intensiv befasst zu haben. Es gibt also keinen echten math. Weg.

Auf alle Fälle ein interessantes Problem.

DECMath's interne Repräsentation der Zahlen ist zur Basis 2^32, also echte Binärzahlen. Damit ist DECMath für dein Problem mit Dezimalzahlen nicht effizient genug. Für binäre Palindrome aber wiederum sehr geeignet. In deinem Falle müsstest du nach jeder Addition die IInteger Zahl mit NStr(Zahl, 10) in einen Dezimalstring konvertieren und dann testen ob die Zahl ein Palindrom ist. Das ist aber ineffizient (obwohl die funktion NStr() sehr effizient ist, weitaus effizienter als das was ich in anderen Libs gesehen habe). Leider lässt sich mathm. diese Umwandlung der Binären IInteger Zahlen zur Basis 10 nicht vermeiden. Dieses Problem wirst du mit allen Bibliotheken haben die intern nicht im dezimalen Zahlensystem arbeiten.


Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz