2013-03-14 19 views
14

Ben 10^80. Herhangi bir fikir bu kadar ihtiyacım var,C++ Son derece büyük tamsayı sayıları için değişken değişken hangisidir?

long long int 

kullanarak denedim Ama alışkanlık 3141592653589793238462643383279502884197169399375 gibi numaralar için çalışıyor? Bilmeme izin ver. Çok teşekkürler.

+0

Bunun gibi büyük tamsayıları temsil etmek için dize veya karakter vektörleri kullanmanız gerekir. – taocp

+6

yerine kendi oluşturmak yerine, GMP kullanarak düşünebiliriz (http://gmplib.org/) – FatalError

+0

OpenSSL dışına BN kütüphanesi o olmayabilir olsa da temel büyük int şeyler için iyi olduğunu * Her * sayısal özellik arıyoruz. Sonuçta, kripto etrafında homurdandı. – WhozCraig

cevap

20

Bunun için herhangi bir yerleşik tamsayı türünü kullanamazsınız. Bir "çok hassas tam sayı" aka "bignum" kitaplığına ihtiyacınız var. C++ için, öncelikle Boost.Multiprecision'u deneyebilirim, ancak Boost'un, özellikle kullandığınız modülün herhangi bir paylaşılan kitaplık (aka DLL) bileşeni varsa, değerinden çok daha fazla sorun olabileceğini unutmayın. Diğer açık seçim ise GNU MP. Bu sadece bir C arayüze sahip, ama çok süratli, güvenilir, bakımlı ve çok popüler (aslında, Boost.MP olduğu görülüyor "sadece" C++ bunun için sarıcı!)

UYARI: Bir bignum kitaplığı isteyebilirsiniz, çünkü RSA gibi büyük sayıları kullanan şifreleme ilkellerinden birini uygulamaya çalışıyorsunuz. bu yapmayın. Jenerik bignum kütüphaneleri, kriptografik kullanım için güvenli değildir ve eğer olsalar bile, güvenliğinizi mahvedecek düzinelerce ince hata olabilir. Bunun yerine iyi test edilmiş bir kriptografi kütüphanesi kullanın; C++ için Botan'u öneririm.

+3

Sorun şu: Herhangi bir kütüphaneyi kullanmak istemiyorum, bu mümkün mü? – user1815324

+1

Kendi sınıfınızı yazın? –

+18

Hayatta birçok şey gibi, mümkün olsa da, tavsiye edilmez. – Ben

0

çok çok sayıda saklamak için nasıl codechef.com bir öğretici vardır. Tüm bilgileri okumak için aşağıdaki bağlantıyı ziyaret edin. Bunu gerçekten iyi açıkladılar.
Computing factorials of huge numbers in cc

+0

Sevgili downvoters, Verilen bilgiyi anlamadıysanız lütfen aşağıya yorum yapın ... Bunu açıklamak için elimden geleni yapacağım ... ama anlamadığınız zaman cevabı reddetme ... – Ani