2012-04-02 18 views
0

Ich habe eine Nummer (num1), die 18 Ziffern lang ist. Ich speichere es in einem Integer-Array. Ich habe eine andere Nummer (num2), die auch 18 Ziffern lang ist. Dies wird auch in einem Integer-Array gespeichert.Wie finde ich das Protokoll einer Nummer?

Ich muss das Protokoll der ersten Nummer an die Basis der zweiten Nummer finden (log num1 bis base num2).

Wie geht das in C++? Ich kann die Protokollfunktion nicht verwenden, da die Zahlen in Arrays gespeichert werden.

+1

Haben Sie eine Bibliothek mit großen Zahlen, die Sie verwenden? Wenn nicht - einen bekommen. – littleadv

+1

Wenn Sie es manuell tun möchten, finden Sie in der Antwort auf diese Frage http://stackoverflow.com/questions/739532/logarithm-of-a-bigdecimal –

+4

18 Ziffern von was? Gespeichert in diesen ganzen Zahlen wie? Welche Endlichkeit? Gepackte Binärdatei? ASCII Hex? ASCII dezimal? Was? In welcher Form möchten Sie die Ausgabe? –

Antwort

2

Sie Schlüsselbegriff für Google ist bigint. Es gibt verschiedene C++ - Bibliotheken, die bigints unterstützen (also eine Zahl, die so lang sein kann, wie es Ihr Speicher zulässt).

Die einzige Bigint-Bibliothek, die ich selbst benutzt habe, ist GMP. Wenn Sie jedoch nur eine einzige Funktion für Bigints benötigen (in Ihrem Fall log), dann nehmen Sie vielleicht eine kleinere Bibliothek (ist praktischer).

Ich habe gerade die GMP-Seite überprüft und sie zufällig bignums genannt. Das könnte ein weiterer nützlicher Begriff für die Suche nach einer Lösung sein. ;-)

Verwandte Themen