C++ में बड़ी संख्याओं (बड़े इंटीजर, हाई प्रिसिजन फ्लोट) को हैंडल करने के लिए Boost.Multiprecision लाइब्रेरी का उपयोग करें। यह बिल्ट-इन टाइप्स (long long 64-बिट तक) की सीमा से आगे जाती है।
मुख्य डेटा टाइप्स
| टाइप | विवरण | प्रिसिजन |
|---|---|---|
cpp_int | आर्बिट्ररी प्रिसिजन इंटीजर | अनलिमिटेड (रनटाइम पर) |
int128_t | फिक्स्ड 128-बिट साइन्ड इंटीजर | 128 बिट (~38 डिजिट) |
int256_t | फिक्स्ड 256-बिट साइन्ड इंटीजर | 256 बिट (~77 डिजिट) |
int1024_t | फिक्स्ड 1024-बिट साइन्ड इंटीजर | 1024 बिट (~308 डिजिट) |
cpp_dec_float_50 | आर्बिट्ररी प्रिसिजन फ्लोटिंग पॉइंट | 50 डेसीमल डिजिट |
उदाहरण 1: बड़ी संख्याओं का गुणनफल (int128_t)
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t largeProduct(long long n1, long long n2) {
int128_t ans = (int128_t)n1 * n2;
return ans;
}
int main() {
long long num1 = 98745636214564698LL;
long long num2 = 7459874565236544789LL;
cout << "Product of " << num1 << " * " << num2 << " = "
<< largeProduct(num1, num2) << endl;
return 0;
}
आउटपुट
Product of 98745636214564698 * 7459874565236544789 = 736630060025131838840151335215258722
उदाहरण 2: बड़े नंबर का फैक्टोरियल (cpp_int)
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
cpp_int largeFactorial(int n) {
cpp_int fact = 1;
for (int i = 2; i <= n; ++i)
fact *= i;
return fact;
}
int main() {
cout << "Factorial of 50: " << largeFactorial(50) << endl;
cout << "Factorial of 100: " << largeFactorial(100) << endl;
return 0;
}
आउटपुट
Factorial of 50: 30414093201713378043612608166064768844377641568960512000000000000 Factorial of 100: 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
उदाहरण 3: हाई प्रिसिजन फ्लोटिंग पॉइंट
#include <iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/math/constants/constants.hpp>
using namespace boost::multiprecision;
using namespace std;
int main() {
// 50 डिजिट प्रिसिजन
cpp_dec_float_50 pi = boost::math::constants::pi<cpp_dec_float_50>();
cout << "Pi (50 digits): " << pi << endl;
// वर्गमूल
cpp_dec_float_50 sqrt2 = sqrt(cpp_dec_float_50(2));
cout << "Sqrt(2): " << sqrt2 << endl;
return 0;
}
कंपाइलेशन
g++ -std=c++17 -O2 -I/path/to/boost program.cpp -o program
नोट: Boost हेडर-ओनली लाइब्रेरी है, अलग से लिंकिंग की आवश्यकता नहीं। C++11 या बाद का संस्करण आवश्यक।