2013-03-14 12 views
14

Próbowałem za pomocąC++ Jaki typ zmiennej dla bardzo dużych liczb całkowitych?

long long int 

Ale to przyzwyczajenie praca dla numerów jak 3141592653589793238462643383279502884197169399375, muszę to maksymalnie 10^80. Każdy pomysł? Daj mi znać. Wielkie dzięki.

+0

Musisz użyć wektorów łańcuchowych lub znakowych do reprezentowania dużych liczb całkowitych w ten sposób. – taocp

+6

Zamiast tworzyć własne, możesz rozważyć użycie GMP (http://gmplib.org/) – FatalError

+0

Biblioteka BN z OpenSSL jest przyzwoita dla podstawowych rzeczy big-int, chociaż może nie mieć * co * funkcji numerycznej szuka. Jednak w końcu krył się wokół krypto. – WhozCraig

Odpowiedz

20

Nie można w tym celu użyć wbudowanego typu liczby całkowitej. Potrzebna jest "wielokrotna dokładna liczba całkowita", czyli biblioteka "bignum". W przypadku C++, najpierw spróbowałbym uzyskać Boost.Multiprecision, ale należy pamiętać, że Boost może być znacznie trudniejszy, niż jest to warte, szczególnie jeśli moduł, którego używasz, ma jakikolwiek komponent biblioteki współdzielonej (aka DLL). Innym oczywistym wyborem jest GNU MP. Ma tylko interfejs C, ale jest dobrze utrzymany, niezawodny, szybki i bardzo popularny (w rzeczywistości wygląda na to, że Boost.MP jest "tylko" opakowaniem C++).

OSTRZEŻENIE: Możesz potrzebować biblioteki bignum, ponieważ próbujesz zaimplementować jedną z kryptograficznych prymitywów używających wielkich liczb, takich jak RSA. Nie rób tego. Ogólne biblioteki binarne nie są bezpieczne do użytku kryptograficznego, a nawet gdyby były, nadal istniałyby dziesiątki subtelnych błędów, które można by zepsuć dla bezpieczeństwa. Zamiast tego użyj dobrze przetestowanej biblioteki kryptograficznej; dla C++ polecam Botan.

+3

Problem polega na tym, że nie chcę używać żadnej biblioteki, czy to możliwe? – user1815324

+1

napisać własną klasę? –

+18

Podobnie jak wiele rzeczy w życiu, o ile to możliwe, nie jest to zalecane. – Ben

0

Istnieje tutorial na temat codechef.com na temat przechowywania bardzo dużej liczby. Odwiedź poniższy link, aby przeczytać pełne informacje. Wyjaśniali to bardzo dobrze.
Computing factorials of huge numbers in cc

+0

Drodzy spadkobiercy, Jeśli nie rozumiesz podanych informacji, proszę skomentuj to ... Postaram się wszystko wyjaśnić ... ale nie idź dalej, jeśli nie rozumiesz tego ... – Ani

Powiązane problemy